我使用来自控制器的方法存储,数据不存储在我的数据库中。
我想在原生HTML的表格中的三个表中插入qazxsw poi,qazxsw poi,qazxsw poi,qazxsw poi,但我不知道要采取什么行动。
我正在使用ArticleController,其中有一个方法NOM_ARTICLE
和三个表模型。
PHOTO_ARTICLE
这是我的数据库表:
TYPE
我的HTML表单:
DESCRIPTION_ARTICLE
我在web.php中有我的路线:
store
这是我的文章模型:
public function create()
{
return view('addarticle');
}
public function store(Request $request)
{
$article = new article;
$article->NOM_ARTICLE = $request->NOM_ARTICLE;
$article->LABEL_TYPE = $request->LABEL_TYPE;
$article->PHOTO_ARTICLE = $request->PHOTO_ARTICLE;
$article->DESCRIPTION_ARTICLE = $request->DESCRIPTION_ARTICLE;
$article->save();
return redirect()->route('addarticle');
}
点击提交按钮后,它会显示如下网址:article ('ID_ARTICLE','NOM_ARTICLE','ID_TYPE,'DESCRIPTION_ARTICLE')
photo_articles('ID_PHOTO','ID_ARTICLE','PHOTO_ARTICLE')
type('ID_TYPE','TYPE')
并重定向到我的视图<form method="post" action="" class="contact_form text-center" id="contact_form">
<div class="">
<div class="col-lg-4">
<input type="text" class="contact_input" name="NOM_ARTICLE" placeholder="Nom d'article" required="required">
</div>
<br/>
<div class="col-lg-4">
<input type="text" class="contact_input" name="ID_TYPE" placeholder="Type d'article" required="required">
</div>
<div>
<input type="hidden" name="MAX_FILE_SIZE" value="250000" />
<input type="file" class="contact_input" name="PHOTO_ARTICLE" placeholder="Capture de votre article" name="fic" size=50 required="required" />
<!-- <input type="submit" value="Envoyer" /> -->
</div>
</div>
<textarea class="contact_textarea contact_input" name="DESCRIPTION_ARTICLE"placeholder="Description" required="required"></textarea>
<button class="contact_button" type="submit">Valider!</button>
</form>
但数据库中没有添加任何内容。
Yaa You显然错过了csrf令牌以传递表单。如果你想在Laravel中传播任何形式,你应该传递csrf令牌。
使用@csrf和blade会将唯一令牌传递给表单提交
Route::resource('addarticle','ArticleController');
例:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class article extends Model {
public $table = 'article';
public $primaryKey ='ID_ARTICLE';
return $this->belongsTo('photo_articles');
}
我从你的http://localhost/testprojet/public/addarticle?NOM_ARTICLE=test&ID_TYPE=book&MAX_FILE_SIZE=250000&PHOTO_ARTICLE=villle+icon.jpg&DESCRIPTION_ARTICLE=ss看到的是你没有在其中放任何动作,你只是把它留空:
addarticle
您应该在控制器中添加到https://laravel.com/docs/5.8/csrf方法的路径,以便在提交表单时,数据将传递到您的控制器中。
此外,提供您的<form method="post" action="" class="contact_form text-center" id="contact_form">
@csrf
<div class="">
<div class="col-lg-4">
<input type="text" class="contact_input" name="NOM_ARTICLE" placeholder="Nom d'article" required="required">
</div>
<br/>
<div class="col-lg-4">
<input type="text" class="contact_input" name="ID_TYPE" placeholder="Type d'article" required="required">
</div>
<div>
<input type="hidden" name="MAX_FILE_SIZE" value="250000"/>
<input type="file" class="contact_input" name="PHOTO_ARTICLE" placeholder="Capture de votre article" name="fic" size=50 required="required"/>
<!-- <input type="submit" value="Envoyer" /> -->
</div>
</div>
<textarea class="contact_textarea contact_input" name="DESCRIPTION_ARTICLE" placeholder="Description"
required="required"></textarea>
<button class="contact_button" type="submit">Valider!</button>
</form>
链接并不能帮助我们理解您的问题,因为我们无法访问它。一个可靠的屏幕截图。
您应该根据资源模式执行操作。
你的web.php
form
你的表格:
<form method="post" action="" class="contact_form text-center" id="contact_form">
您还应该包含store
刀片指令。
在你的控制器:
localhost
你正在添加Route::resource('articles','ArticleController');
到文章,但你没有像你说的那样在你的文章表中有这个列,所以使用下面的行是没有意义的:
<form method="post" action="{{route('articles.store')}}" class="contact_form text-center" id="contact_form">
@csrf
此外,您没有从您的请求中收到任何@csrf
,并且您的文章表中也没有此列。所以你必须删除这一行:
public function store(Request $request)
{
$article = new Article();
$article->NOM_ARTICLE = $request->NOM_ARTICLE;
$article->DESCRIPTION_ARTICLE = $request->DESCRIPTION_ARTICLE;
$article->save();
return redirect()->route('addarticle');
}
试试这个:我希望它会对你有所帮助。
调节器
PHOTO_ARTICLE
根据您的数据表创建三个模型并粘贴所有代码。
$article->PHOTO_ARTICLE = $request->PHOTO_ARTICLE;