Php Laravel 5-我正试图理解的奇怪行为
只是想了解一些事情。一个项目可以有许多文档。在文档控制器中,我在Php Laravel 5-我正试图理解的奇怪行为,php,laravel-5,Php,Laravel 5,只是想了解一些事情。一个项目可以有许多文档。在文档控制器中,我在create函数中执行此操作: public function create(Project $project) { $documents = Document::all(); $documentLink = $_GET['documentType']; $document = Helper::findInCollection($documents, "name", $documentLink);
create
函数中执行此操作:
public function create(Project $project)
{
$documents = Document::all();
$documentLink = $_GET['documentType'];
$document = Helper::findInCollection($documents, "name", $documentLink);
dd($document);
if ($document) {
return View::make($documentLink.'Doc.edit', compact('project', 'document'));
}
}
所以我基本上得到了所有的文件。然后我得到了我目前正在处理的文档。然后我将其传递给该文档的编辑视图。dd
向我显示正确的文档,因此这很好
在该文档的“编辑”视图中,我还可以看到所需的正确文档
{{ $document }}
所以我知道我有正确的文档
。此编辑页的表单模型为
{!! Form::model($project->document, [
'class'=>'form-horizontal',
'method' => 'PATCH',
'route' => ['projects.documents.update', $project, $document]
]) !!}
因此,我正在传递路径我的项目
模型和我的文档
模型。现在我假设$document
将是我正在处理的文档
但是,在update函数中,如果
public function update(Project $project, Document $document)
{
dd($document);
return null;
}
它输出一个空的文档
。但是,如果我从函数参数中删除Document
的类型提示,它将输出我正在处理的文档的id
为什么会这样?为什么传递文档
会输出一个空文档,但删除它只会显示当前文档
的id
欢迎提供任何信息
谢谢
它输出一个空文档。但是,如果我从函数参数中删除文档,它将输出我正在处理的文档的id
为什么会这样?为什么传递文档会输出一个空文档,但删除它只会显示当前文档的id
简单的答案是,拉维尔斯很棒
通过类型提示Document$Document
Laravel将从容器中为您构建一个新的Document实例
如果没有类型提示,您的路由将定义如下内容:;假设您将模型文档绑定到文档路由
/document/update/{document}
此外,Laravel将始终发送请求对象作为第一个参数