具有相同路由组的多个前缀 [英] multiple prefix with the same route group

查看:94
本文介绍了具有相同路由组的多个前缀的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为学校编写一个相当简单的网站...该网站上有新闻,文章,视频片段等

im writing a fairly simple website for a school ... this website has news , articles , video clips ... etc

它的工作方式是在主页上,向访问者展示诸如

the way it works is in the home page we present visitor with some lessons like

>math 
>geography 
>chemistry 

用户在其中选择1,然后根据用户选择更改网站内容

user selects 1 on these and website contents changes based on the user selection

例如,如果用户选择数学,他将看到新闻,文章,有关数学的视频等……现在,这就是即时通讯正在做的事情(请忽略语法错误)

for example if user selects math he will see news , article , videos about math and so on ... right now this is what im doing (pleas ignore syntax errors)

Route::group(['prefix'=>'math'], function () {
    Route::get('/news', 'NewsController@index')->name('news_index');
    Route::get('/article', 'ArticleController@index')->name('article_index');
});

Route::group(['prefix'=>'geography'], function () {
    Route::get('/news', 'NewsController@index')->name('news_index');
    Route::get('/article', 'ArticleController@index')->name('article_index');
});

Route::group(['prefix'=>'chemistry'], function () {
    Route::get('/news', 'NewsController@index')->name('news_index');
    Route::get('/article', 'ArticleController@index')->name('article_index');
});

基本上为每个前缀重复所有链接....但是随着链接的增长,它将变得越来越难以管理...还有更好的方法吗?像

basically repeating all links for each prefix .... but as the links grow it will become more and more unmanageable ... is there any better way to do this ? something like

Route::group(['prefix'=>['chemistry','math' , 'geography' ], function () {
    Route::get('/news', 'NewsController@index')->name('news_index');
    Route::get('/article', 'ArticleController@index')->name('article_index');
});

-------------------------更新-------------

------------------------- update -------------

我已经尝试过

$myroutes =  function () {
    Route::get('/news', 'NewsController@index')->name('news_index');
    Route::get('/article', 'ArticleController@index')->name('article_index');
};

Route::group(['prefix' => 'chemistry'], $myroutes);
Route::group(['prefix' => 'math'], $myroutes);
Route::group(['prefix' => 'geography'], $myroutes);

,它工作正常,问题是最后一个前缀附加到所有内部链接上

and it works fine , the problem is the last prefix gets attached to all the internal links

例如,如果我单击数学

我的链接将会

site.com/math/news

site.com/math/news

但已加载页面上的所有链接都像

but all the links on the loaded page like

<a href="{{route('article_index')"> link to article </a>

看起来像

site.com/geography/article

site.com/geography/article

基本上链接会获得最后提到的前缀,而不管当前选择的前缀是什么

basically link get the last mentioned prefix regardless of currently selected one

推荐答案

为什么不这样:

$subjects = [
    'chemistry', 'geography', 'math'
];

foreach ($subjects as $subject) {
    Route::prefix($subject)->group(function () {
        Route::get('news', 'NewsController@index')->name('news_index');
        Route::get('article', 'ArticleController@index')->name('article_index');
    });
}

我知道这是基本的方法.然而,您可以轻松添加主题,这很容易理解.

I know this is an elementary way do to it. Yet you can easily add subjects, it is clear and effortless to understand.

更新

正如评论中指出的那样,按主题命名路线可能很方便,这是执行此操作的方法:

As pointed in the comments it could be convenient to name the route as per subject, here is how to do this:

$subjects = [
    'chemistry', 'geography', 'math'
];

foreach ($subjects as $subject) {
    Route::prefix($subject)->group(function () use ($subject) {
        Route::get('news', 'NewsController@index')->name("{$subject}_news_index");
        Route::get('article', 'ArticleController@index')->name("{$subject}_article_index");
    });
}

这篇关于具有相同路由组的多个前缀的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆