2015-06-09 98 views
0

所以我使用Laravel开始,我发现它很容易,现在我创造我自己的RESTful服务。我的问题是我不知道我是否正确地做了href链接,但是它正在工作。下面是代码:Laravel HREF重定向

<a href="{{URL::to('accounts/create')}}">Add user</a> 

在我控制我只呈现刀片:

public function create() 
{ 
    return view('accounts.create'); 
} 

所以,如果我点击链接添加用户,它将我重定向到localhost:8080/accounts/create这是运作良好。我的问题是,是否有更好的方法来做到这一点?就像我改变了我的路线文件中的任何一样,我不会再改变href链接了吗?

+0

快速了解您的可用路线及其名称:[Laravel 4 - Blade Templating - 如何正确链接到路线?](http://stackoverflow.com/questions/22751866/ laravel-4刀抵模板 - 如何对正确链接到清柔te) –

回答

3

理想情况下,你会在您的路线文件中命名路线。 喜欢的东西,

Route::get('accounts/create', [as => 'createAccount', 'uses' => '[email protected]']); 

您将如下

<a href="{{URL::route('createAccount')}}">Add user</a> 
在你看来

使用它。

这样,即使您更改URL(账户/创建),或动作名称(创建),你不会有改变它在视图中。允许您的视图是独立的。

+0

谢谢你这位先生,我可以问一个问题吗?我是否真的需要在每个应用程序中始终执行“laravel new app_name”? – FewFlyBy

1

http://laravel.com/docs/4.2/routing#named-routes

例子:

Route::get('accounts/create', array('as' => 'signup', 'uses' => '[email protected]')); 

<a href="{{URL::route('signup')}}">Add user</a> 

这条路线被命名为 “注册”,你可以为随时更改网址:

Route::get('accounts/signup', array('as' => 'signup', 'uses' => '[email protected]')); 
+0

谢谢你这位先生,我可以问一个问题吗?我是否真的需要在每个应用程序中始终执行“laravel new app_name”? – FewFlyBy

+0

还有其他方法可以将Laravel设置为: 'composer create-project laravel/laravel --prefer-dist' 但是,您应该始终使用其中一种设置每次。 或者只是复制新鲜的Laravel复制到另一个项目和作曲家安装。 – RY35

1

是的,你可以使用动作()辅助呼叫控制器内的方法和按需自动生成它的路线。所以我们考虑一下你有一个名为FrontendController.php的控制器和一个名为showFrontend($ section)的方法,并且假设你有一个匹配这个控制器和方法的路由(比如说“frontend/show/{$ section} ”,你可以拨打:

action('[email protected]', array('index')) 

这将返回:

frontend/show/index 

所以基本上它看起来关联到该方法/控制器的路线,您可以与其他佣工结合此创建一个完整的URL 。

注意:考虑命名空间,以防控制器,嵌套资源等有不同的文件夹。

我希望它有帮助!

+0

谢谢你这位先生,我可以问一个问题吗?我是否真的需要在每个应用程序中始终执行“laravel new app_name”? – FewFlyBy

+0

该命令仅用于创建Laravel软件包的全新安装。你可以使用这个命令来创建一个基于laravel的新项目,或者你可以使用composer,或者你可以从Github下载代码并将它放在任何你想要的地方,等等......你可以在这里找到更多的信息:http: //laravel.com/docs/5.1 –

+0

我更喜欢现在下载代码.. – FewFlyBy

2

你可以做的是使用数组中的as键路线的第二个参数给你的路线名称:

Route::get('accounts/create', [ 
    'as' => 'accounts.create', 
    'uses' => '[email protected]' 
]); 

然后,你可以通过它的名字和指这条路线在您的应用程序即使您恰好更改了网址,它也会到达相同的位置。对于一个锚标记,你可以做到以下几点:

{{ URL::route('accounts.create') }} 

如果您使用的是资源控制器将有预定义的路线,你可以在这里看到下处理好通过资源控制器操作:http://laravel.com/docs/5.1/controllers#restful-resource-controllers

你总是可以通过运行php artisan route:list

+0

谢谢你这位先生,我可以问一个问题吗?我是否真的需要在每个应用程序中始终执行“laravel new app_name”? – FewFlyBy

+0

不客气,谢谢你的感谢。至于你的问题,你说的是使用laravel安装程序来创建一个新项目,对吧?如果是这样,是的,但是,fyi的评论并不是真正提出单独问题的地方。尝试在这里创建一个新问题,或尝试在laravel社区之一中询问,例如laravel.io论坛laracasts.com论坛或laravel irc,如果您还有其他问题。谢谢。 – haakym

+0

好吧,先生,谢谢 – FewFlyBy