一个视图中的两个不同的控制器
问题描述:
我有一个视图,它有一个文本编辑器,内容值为DocumentController,文本区域为CommentController。我想在同一视图中发表评论。下面是我的观点。一个视图中的两个不同的控制器
read.blade.php
<div class = "col-md-6">
<div class = "form-group">
<textarea id = "content">{{ $document->content }}</textarea>
</div>
<div class = "form-group">
<button type = "submit" class = "btn btn-success">Approve</button>
</div>
</div>
<div class = "col-md-6">
<form class = "form-vertical" method = "post" action = "{{ route ('comments') }}">
<div class = "form-group {{ $errors->has('comment') ? ' has-error' : '' }}">
<label for = "comment">Comment:</label>
<textarea class = "form-control" rows = "4" id = "comment" placeholder = "Leave a feedback"></textarea>
@if ($errors->has('comment'))
<span class = "help-block">{{ $errors->first('comment') }}</span>
@endif
</div>
<div class = "form-group">
<button type = "submit" class = "btn btn-primary">Comment</button>
</div>
<input type = "hidden" name = "_token" value = "{{ Session::token() }}">
</form>
</div>
这里是我的功能DocumentController访问read.blade.php的内容。
class DocumentController extends Controller
{
//READ
public function readDocuments($id)
{
//Find the document in the database and save as var.
$document = Document::find($id);
return view ('document.read')->with('document', $document);
}
}
CommentController在这里,当我试图死和转储它只是得到我的令牌的请求,但在我的textarea它没有得到值的请求。我怎么解决这个问题?有小费吗?
class CommentController extends Controller
{
public function postComments(Request $request)
{
dd($request);
$this->validate($request,
[
'comment' => 'required',
]);
$commentObject = new Comment();
$commentObject->comment = $request->comment;
$commentObject->save();
}
}
路线为获得的内容DocumentController
Route::get('/document/{id}',
[
'uses' => '\App\Http\Controllers\[email protected]',
'as' => 'document.read',
'middleware' => 'auth',
]);
路线进行后使用CommentController
//COMMENT
Route::post('/comments',
[
'uses' => '\App\Http\Controllers\[email protected]',
'as' => 'comments',
]);
答
你缺少name
属性您textarea
注释的内容。
更改此:
<textarea class = "form-control" rows = "4" id = "comment" placeholder = "Leave a feedback"></textarea>
要这样:
<textarea class="form-control" rows="4" name="comment" id="comment" placeholder="Leave feedback"></textarea>
伟大的!为什么我需要将'name =“comment”'而不是'id =“comment”'?因为我的textarea中已经有了一个标识符。 – Francisunoxx
在这种特定情况下,区别在于HTML表单是一组具有'name'的输入元素,但是'id'是主要由CSS和JavaScript使用的全局元素选择器。如果没有字段名称,表单不知道该调用该值,因此完全跳过该字段。 – Qevo
要清楚的是,在表单输入中设置'name'和'id'是非常普遍的。在最近的记忆中,我所做过的每一个表格都有各自的元素。请记住'id'必须是全局唯一的,'name'在表单中必须是唯一的。 – Qevo