我是laravel的新手。我唯一的控制器的网址是
http://localhost/myapp/public/users
在表单函数的视图中,我不希望必须执行post函数的绝对路径,例如
<form method='post' action='/myapp/public/user/update-user'>
我想将用户控制器设置为基本网址路径,以便我可以在表单中说明
<form method='post' action='/update-user'>
这可能吗?
答案 0 :(得分:2)
使用URL :: to() 或者只是使用laravel形式 {{表格::打开(阵列( 'URL'=&GT; 'ROUTE_NAME'))}}
答案 1 :(得分:0)
您可以使用URL :: to()函数.Laravel支持RESTful API或RESTful路由。所以使用像这样的路由不是一个好主意。所以使用像, 在 app / routes.php
中// for view (GET)
Route::get('users', function(){
View::make('users');
});
Route::post('users', function(){
// do form validation and process here or call a function from controller
});
然后在您的表单中使用,
echo Form::open();
// form elements
echo Form::close();
答案 2 :(得分:0)
是的,这是可能的,但它有点复杂,因为laravel并没有真正设置为支持这一点。
您需要更改文件vendor/laravel/framework/src/Illuminate/Http/Request.php
,将函数root()
替换为:
public function root($domain = NULL)
{
return rtrim(($domain?:$this->getSchemeAndHttpHost()).$this->getBaseUrl(), '/');
}
然后在文件getRootUrl($scheme, $root = null)
的{{1}}方法中,您需要更改此行:
vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php
到此:
$root = $root ?: $this->request->root();
这应该允许laravel正确地自动检测和处理子文件夹,因此您将能够使用标准的URL方法。
答案 3 :(得分:0)
首先,您需要使用虚拟主机或Web服务器中的别名(apache或...)隐藏URL的/ public / part。入口点(http://some.host/alias/或http://some.virtual.host/)应直接指向公共文件夹(即/ whatever / path / myapp / public /)。
其次,使用路线,您可以轻松完成剩下的工作。路线
Route::get('update_users', "UsersController@updateAction")
会将http://whatever.host/update_users重定向到正确的操作,而不需要丑陋的格式。