Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5-我正试图理解的奇怪行为_Php_Laravel 5 - Fatal编程技术网

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将始终发送请求对象作为第一个参数