重定向到参数化名称控制器

时间:2017-03-06 11:08:02

标签: controller routes laravel-5.3

我想重定向到'通用'控制器功能。 我尝试过这样的事情:

[1]: Route:get('/ent/create_foreign/{entity}, '{entity}Controller@index');


[2]: Route::get('/ent/create_foreign/{entity}', 
            function($entity){
                return redirect()->action('{$entity}Controller@index');
            }

    );

[3]: Route::get('/ent/create_foreign/{entity}', [
        'as' => 'entity1', 'uses' => 'entity1Controller@index',
        'as' => 'entity2', 'uses' => 'entity2Controller@index'
    ]);

[1]:显示此错误: Class App \ Http \ Controllers {entity}控制器不存在

[2]:显示此错误:       Action App \ Http \ Controllers {$ entity} Controller @ index未定义。
显然,这个控制器及其功能已被定义。

[3]:它有效,但总是返回最后一个'实体'。对于此示例,返回'entity2'。

提前致谢。

1 个答案:

答案 0 :(得分:0)

尝试将单引号更改为双引号,例如2:

Route::get('/ent/create_foreign/{entity}', function ($entity) {
    return redirect()->action("{$entity}Controller@index");
});

您的班级名称和文件名应该保持一致,我建议您在可以帮助提高易用性时遵循PSR。

  

类名必须在StudlyCaps中声明。

http://www.php-fig.org/psr/psr-1/#namespace-and-class-names

E.g。让我们说有一个“用户关系控制器”

<强>正确

class UserRelationsController

<强>不正确

class userRelationsController

此外,文件名也应该是区分大小写的匹配,例如

class UserRelationsController // UserRelationsController.php

所以,如果您打算使用上述路线重定向到UserRelations控制器,您的网址必须是:

/ent/create_foreign/UserRelation 

而不是像:

/ent/create_foreign/userRelation //or
/ent/create_foreign/user_relation

希望这有帮助!