【问题标题】:Laravel 5 - Handling different data within ControllerLaravel 5 - 在控制器中处理不同的数据
【发布时间】:2015-12-22 03:54:17
【问题描述】:

我有一个系统,您可以在其中创建不同的文档。从选择列表中,我可以选择例如 Project Brief,这将向我显示 Project Brief 表单,我可以在其中添加数据以完成项目简介。我还可以从选择中选择其他文档,显示给我的表单将适合所选文档。

我遇到的一个问题是我为每种文档类型创建了一个新的数据库表,以及一个新的模型、控制器等。我知道如果我创建了多种类型的文档,这将失控,所以我决定改变一些事情。我的新数据库设计是这样的

所以我正在制作一个通用文档表,我可以用它来制作不同的文档。 我现在希望有一个通用的文档模型,所以我不需要为每种类型的文档创建一个新模型。我面临的项目是这样的。在我的项目页面中,我有一个下拉菜单,您可以在其中选择要创建的文档类型。一个例子是这样的

{!! link_to_route('projects.projectBrief.create', 'Project Brief', array($project->id)) !!}

以上路线如下

Route::model('projects.projectBrief', 'Document');
Route::resource('projects.projectBrief', 'Docs\DocumentController', ['except' => ['index', 'show']]);

所以它使用项目简介视图,但也使用通用文档控制器。现在在我的文档控制器中,目前我的创建功能类似于以下内容

public function create(Project $project)
{
    return View::make('projectBrief.create', compact('project'));
}

这对这个文档来说很好,但是因为其他文档类型将使用相同的控制器,我需要一种方法来分离事物。我该怎么做呢?因此,如果我从 select 选项中选择 Reporting Document,则上面的 create 方法应该返回 reportingDoc 的视图。如何确定要返回的视图?

谢谢

【问题讨论】:

    标签: laravel-5


    【解决方案1】:

    有很多方法可以做到这一点,我建议在表单链接中添加 documentType 作为参数。

    {!! link_to_route('projects.projectBrief.create', 
        'Project Brief', 
        array('projectId' => $project->id, 'documentType' => 'projectBrief')) !!}
    

    请注意,这将需要更改您的控制器以获取命名的 projectId 和 documentType 参数。

    【讨论】:

      猜你喜欢
      • 2015-05-07
      • 2019-05-11
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 2017-04-28
      相关资源
      最近更新 更多