2

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

http://localhost/myapp/public/users

在表单功能的视图中,我不想为 post 功能做一个绝对路径,例如

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

我只想将用户控制器设置为基本 url 路径,这样我就可以在我的表单中说

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

这可能吗?

4

4 回答 4

2

使用 URL::to() 或简单地使用 laravel 表单 {{Form::open(array('url'=>'route_name'))}}

于 2013-09-18T09:14:42.277 回答
0

First, you need to hide the /public/ part of your URL using the virtual host or the alias in your web server (apache or ...). The entry point (http://some.host/alias/ or http://some.virtual.host/) should lead directly to the public folder (i.e. /whatever/path/myapp/public/).

Second, using the routes, you can do the remaining easily. The route

Route::get('update_users', "UsersController@updateAction")

will redirect the http://whatever.host/update_users to the correct action without the need of the ugly format.

于 2014-11-13T19:57:04.160 回答
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)文件中的方法中,vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php您需要更改此行:

$root = $root ?: $this->request->root();

对此:

$root = $this->request->root($root);

这应该允许 laravel 自动检测和正确处理子文件夹,因此您将能够使用标准 URL 方法。

于 2014-08-12T16:41:21.303 回答
0

你可以使用 URL::to() 函数。Laravel 支持 RESTful API 或 RESTful 路由。所以像这样使用路由不是一个好主意。所以使用like,在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();
于 2013-09-18T09:20:51.623 回答