只是想首先注意的是,当我在他们自己的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。
有关为何可能发生这种情况的任何信息。
由于
答案 0 :(得分:2)
呃......你必须退回这个功能。
public function create(Project $project, $name)
{
return $this->redirectResult($project, $name);
}