2013-09-18 3 views
1

Я новичок в laravel. Мой адрес для моего единственного контроллераОпределить базовый url для laravel

http://localhost/myapp/public/users 

В воззрениях для функций формы, я не хочу, чтобы сделать абсолютный путь к функции поста, например,

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

Я хочу просто установить контроллер пользователей как путь Базовый URL, так что я могу сказать, в моей форме

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

возможно ли это?

+0

Не можете ли вы сделать это с помощью маршрутов? Кроме того, ваши URL-адреса не должны быть/myapp/public/user/update-user, они должны быть без/myapp/public. Возможно, ваша установка Laravel настроена неправильно? – SixteenStudio

+0

ах, может быть, так. Можете ли вы направить меня, как настроить его правильно? – Nicola

+0

Я тоже совершенно новый в мире маршрутов, поэтому я не знаю, как это! Я смотрю, но я не могу процитировать это. – Nicola

ответ

2

Используйте URL :: к() или просто использовать Laravel форма {{Form :: разомкнут (массив ('URL' => 'ROUTE_NAME'))}}

0

Вы можете использовать URL :: для(). Laravel поддерживает RESTful API или RESTful-маршрутизацию. Так что это не очень хорошая идея использовать маршрутизацию как this.So использования, как, В приложение/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(); 
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.

0

Во-первых, вам нужно скрыть/public/часть вашего URL-адреса с помощью виртуального хоста или псевдонима на вашем веб-сервере (apache или ...). Точка входа (http://some.host/alias/ или http://some.virtual.host/) должна вести непосредственно к общей папке (то есть/whatever/path/myapp/public /).

Во-вторых, используя маршруты, вы можете сделать все остальное легко. Маршрут

Route::get('update_users', "[email protected]") 

перенаправит http://whatever.host/update_users к правильному действию без необходимости уродливой формы.

Смежные вопросы