如何在刀片中以多种语言将数据(CRUD)FORM插入(创建)到数据库中,并使用LARAVEL MULTILANGUAGE



我已经学习了本教程(https://mydnic.be/post/how-to-build-an-efficient-and-seo-friendly-multilingual-architecture-for-your-laravel-application)关于laravel多语言和本地化。一切似乎都很好,只是我想创建一个CRUD,用多种语言插入这篇文章的标题和内容,并将其存储在数据库中,然后在索引刀片中读取。

你能给我看一个CRUD的例子吗?在刀片中为CREATE,在控制器中为CREATE和STORE函数。如何使其发挥作用?

这是我简单的主要CRUD,如何在创建时将其扩展为能够创建并存储到多种语言中。以及如何在使用上面教程中的可翻译包时扩展控制器以多种语言存储(链接(。

CRUD:

<form method="POST" action="/posts">
@csrf
<div class="form-group">
<label for="title">Title</label>
<input type="text" class="form-control" id="title" name="title">
</div>
<div class="form-group">
<label for="content">Content</label>
<textarea id="content" name="content" class="form-control"></textarea>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Publish</button>
</div>
</form>

控制器

public function store(Request $request)
{
$post = Post::all();
$this->validate(request(), [
'title' => 'required',
'content' => 'required'
]);
$post = new Post;
$post->title = $request->title;
$post->content = $request->content;
$post->save();
return redirect('/');

谢谢:(

我是本教程的作者。

该实现的全部意义在于,您根本不必担心模型区域设置。区域设置是通过URL"/en/…"设置的

因此,如果你向你的模型商店URL发出POST请求,比如:

POST /en/post {payload}

laravel应用程序的应用程序区域设置将在您达到PostController@store方法之前自动设置。

然后,您可以像往常一样简单地创建模型(就像在您的示例中一样,这是正确的(,并且模型将与相应的区域设置一起存储。

现在,您的模型最初是用定义的语言环境创建的,您应该能够用另一种语言编辑它。

因此,您可以转到这个URL:/en/post/:id/edit,然后切换到另一个区域设置:/fr/post/:id/edit,您会注意到所有可翻译字段的输入都是空白的。这很正常,因为该模型的"fr"翻译还不存在。

因此,您可以使用"fr"翻译字段填写表单,然后保存(更新模型(。翻译将被保存。您的模型现在已翻译:(

希望这能有所帮助!

PS您可以在这里查看示例代码https://github.com/mydnic/Laravel-Multilingual-SEO-Example

因此,根据教程,您将在posts表中有一个名为locale的列然后在您的视图中,您可以添加一个选择字段,从中可以选择区域设置

<div class="form-group">
<label for="locale">Locale</label>
<select id="locale" name="locale" class="form-control">
<option value="en">English</option>
<option value="fr">French</option>
</select>
</div>

然后在控制器中添加以下行:

$post->locale = $request->locale;

locale放入post模型中的$fillable数组中。

在这种情况下运行良好:

控制器:

public function create()
{
return view('services.new');
}
public function store(Request $request)
{
$service = new Service();
$service->save();
$this->validate($request, [
'title2' => 'required|max:350',
'content2' => 'required'
]);
foreach (['en', 'bs'] as $locale) {
$service->translateOrNew('en')->title = $request->title;
$service->translateOrNew('en')->content = $request->content; 
$service->translateOrNew('bs')->title = $request->title2;
$service->translateOrNew('bs')->content = $request->content2; 
}

$service->translateOrNew('en')->title = $request->title;
$service->translateOrNew('en')->content = $request->content;  
$service->translateOrNew('bs')->title = $request->title2;
$service->translateOrNew('bs')->content = $request->content2; 
// $article->translateOrNew('en')->text = ['texten'];
// $article->translateOrNew('ka')->name = ['nameka'];
// $article->translateOrNew('ka')->text = ['textka'];



// return $article;
// exit();
$service->save();
return redirect()->back();

}

BLADE FOR CREATE+CSS(在后台(:

<form action="{{route('service.store')}}" method="POST">
{{csrf_field()}}


<div class="tabset">
<!-- Tab 1 -->
<input type="radio" name="tabset" class="radio1" id="tab1" aria-controls="marzen" checked>
<label for="tab1">Bosanski</label>
<!-- Tab 2 -->
<input type="radio" class="radio1" name="tabset" id="tab2" aria-controls="rauchbier">
<label for="tab2">Engleski</label>
{{-- <!-- Tab 3 -->
<input type="radio" name="tabset" id="tab3" aria-controls="dunkles">
<label for="tab3">Dunkles Bock</label> --}}
<div class="tab-panels">
<section id="marzen" class="tab-panel">
<h2>Dodaj novu uslugu</h2>
<div class="form-group">
<lebal>Naslov*(bs)</lebal>
<input type="text" class="form-control" name="title2">
</div>
<div class="form-group">
<lebal>Opis*(bs)</lebal>
<textarea class="form-control" name="content2"></textarea>
</div>
</section>
<section id="rauchbier" class="tab-panel">
<h2>Dodaj novu uslugu</h2>
<div class="form-group">
<lebal>Title (EN)</lebal>
<input type="text" class="form-control" name="title">
</div>
<div class="form-group">
<lebal>Description (EN)</lebal>
<textarea class="form-control" name="content"></textarea>
</div>
</section>
<section id="dunkles" class="tab-panel">
<h2>Tab3</h2>
</section>
</div>
<input type="submit" value="Submit">
</form>

WEB.hp:

Route::post('/create',[
'uses' => 'ServicesController@store',
'as' => 'service.store'
]);

相关内容

最新更新