重定向到查看文件

时间:2016-05-27 13:56:59

标签: laravel laravel-5 laravel-5.1

只是想首先注意的是,当我在他们自己的retrspective函数中有重定向时,这很好用。 基本上,我创建了一个项目。在项目中,我可以制作多种类型的文档。关系都是适当的设置 因此,在项目中,我可以链接到可以创建的不同文档。这些就像

<li>{!! link_to_route('projects.document.create', 'Some Document',  array($project, 'someDocument')) !!}</li>

路线就像这样

Route::get('projects/{projects}/document/{name}', array('as' => 'projects.document.create', 'uses' => 'DocumentController@create'));

然后在我的DocumentController中我这样做

public function create(Project $project, $name)
{
    $this->redirectResult($project, $name);
}

redirectResult函数实质上检查以前是否已创建所选文档(在本例中为someDocument)(项目可​​以包含许多文档,但每种类型只有一种)。 如果从未为项目创建过文档,则会显示该文档的创建视图。如果在显示编辑视图之前创建了它。这是函数

public function redirectResult(Project $project, $name) {
    $selectedDoc = Document::where('project_id', '=', $project->id)
        ->where('name', '=', $name)
        ->first();

    if(!$selectedDoc) {
        return View::make($name.'.create', compact('project'));
    }
    else {
        return View::make($name . '.edit', compact('project', 'selectedDoc'));
    }
}

现在,当我选择一个文档时,我最终会出现一个空白页面。网址是正确的,没有错误或任何东西,只是一个空白页面。奇怪的是,当我以旧的方式(这应该与上面的行为相同)时 有用。旧的方式与上面完全相同,但我的创建函数就是这样的

public function create(Project $project, $name)
{
    $selectedDoc = Document::where('project_id', '=', $project->id)
        ->where('name', '=', $name)
        ->first();

    if(!$selectedDoc) {
        return View::make($name.'.create', compact('project'));
    }
    else {
        return View::make($name . '.edit', compact('project', 'selectedDoc'));
    }
}

唯一不同的是,视图制作代码直接在函数内,而不是调用具有此代码的函数。我想把所有这些重复代码都放在自己的函数中,所以我没有 必须为每个文档控制器功能重复它。

为什么我的新方式将我带到空白页面有什么理由?只是为了排除显而易见的,我确实有包含正确设置的视图文件的文件夹。所以对于views文件夹中的上述示例 我有一个名为someDocument的文件夹,在其中我有edit.blade.php。

有关为何可能发生这种情况的任何信息。

由于

1 个答案:

答案 0 :(得分:2)

呃......你必须退回这个功能。

public function create(Project $project, $name)
{
    return $this->redirectResult($project, $name);
}