为laravel定义基本URL

时间:2013-09-18 09:07:52

标签: php laravel

我是laravel的新手。我唯一的控制器的网址是

http://localhost/myapp/public/users

在表单函数的视图中,我不希望必须执行post函数的绝对路径,例如

<form method='post' action='/myapp/public/user/update-user'>

我想将用户控制器设置为基本网址路径,以便我可以在表单中说明

<form method='post' action='/update-user'>

这可能吗?

4 个答案:

答案 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重定向到正确的操作,而不需要丑陋的格式。