如何根据视图文件和路由构建此上下文?

时间:2018-02-18 21:08:47

标签: laravel

应用程序的前端有左页,用户可以在其中创建新会议。使用网址“http://proj.test/createConference”访问此页面。

存储会议后,应将用户重定向到该特定会议的管理区域的索引页面。网址可以是“http://proj.test/myconference/2”。

用户还始终可以访问带有两个链接的子菜单,以列出他创建的会议并编辑其用户帐户。

enter image description here

此管理区域特定于用户创建的每个会议,在此区域中用户可以编辑会议详细信息(标题,说明等),但也可以管理会议的其他方面,如编辑注册类型,列表参与者等

我怀疑ConferneceControler使用哪种方法,如何注册路由以及如何组织视图文件夹中的文件,以便在创建会议后将用户重定向到特定会议的会议管理区域。此外,当用户访问特定会议上的“管理会议”链接时(实际上,它们都是相同的上下文)。

我现在没有用户上下文的结构可以访问他创建的每个会议的会议管理区域:

观看目录:

views
   createConference.blade.php (page with a form to create new conference) 
   app.blade.php (template shared by all frontend pages)
   index.blade.php (index page of the frontend)

路线:

Route::group(['prefix' => '', 'middleware' => 'auth'], function(){

    Route::post('/conference/store', [
        'uses' => 'ConferenceController@store',
        'as'   => 'conference.store'
    ]);

    Route::get('/createConference', [
        'uses' => 'ConferenceController@create',
        'as'   => 'conference.create'
    ]);
});

ConferenceController商店方法:

public function store(Request $request)
{
    $this->validate($request, [
        'conference_name' => 'required|max:255|string',
         ...
    ]);
    $conference = Conference::create([
        'name' => $request->conference_name,
        ...
    ]);
    // here the user should be redirected to the conference management area specific for this created conference
}

1 个答案:

答案 0 :(得分:0)

下面我将如何构建它的草图。

views // First option
    conference
        create.blade.php // left image
        manage.blade.php // bottom right
        list.blade.php // top right
    participants
        ...
    layout
        main.blade.php // template shared by all frontend pages

views // Second option
    conference
        create.blade.php // left image
        list.blade.php // top right
    manageConference
        index.blade.php // bottom right
    participants
        ...
    layout
        main.blade.php // template shared by all frontend pages


GET:    /conference                             -> @index
GET:    /conference/create                      -> @create
POST:   /conference                             -> @store
GET:    /conference/edit/<conference-tag>       -> @edit
POST:   /conference/update/<conference-tag>     -> @update

GET:    /conference/manage/<conference-tag>     -> @manage // First option
or
GET:    /manageConference/<conference-tag>      -> ManageConference@index // Second option


@store -> @manage

我不确定你为什么会在你的路线中通过'as' => 'conference.create',但我可能缺乏更大的画面。