Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 10.10.2014 10:28:26

Сокращение Routes.

Приветствую! Такой вопрос:
Есть контроллер, который выполняет работу только с POST запросами. В нем куча методов

class CoreController extends BaseCOntroller{
public function methodOne(){
  // do something
}
  public function methodTwo(){
  // do something
}
}

Хочу сделать какую-нибудь конструкцию уникальную для данного контроллера. Т.е. если route начинается на "/proc", то использовать контроллер CoreController и нужный метод. Придумал вот такое решение:

Route::post("/proc/{neededmethod}", function($needmethod) {
    return Redirect::action("CoreController@$needmethod"); // to needed controller and needed method
});

Но выдает ошибку "Route [CoreController@methodOne] not defined"

когда отправляю запрос по адресу "/proc/methodOne"

Делаю это для того, чтобы не описывать для каждого запроса свой route, уж очень накладно да и не правильно мне кажется

Не в сети

#2 10.10.2014 13:41:27

Aladin

Re: Сокращение Routes.

решение:
class CoreController extends BaseCOntroller{
  public function postOne(){
  // do something
  }
  public function postTwo(){
  // do something
  }
}

файл app/routes.php
Route::controller('post', 'CoreController');


урл первого метода:
http://youdomain com/post/one

урл второго метода:
http://youdomain com/post/two

см. http://laravel.ru/docs/v4/controllers

#3 10.10.2014 13:41:40

Re: Сокращение Routes.

в общем сделал как-то так, но все равно не работает(

Route::post("/proc/{needmethod}", "CoreController@navig");

class CoreController extends BaseController{
public function navig($needmethod){
   call_user_func(array($this, $needmethod));
}
public function methodOne(){
   echo "some string for test";
   return View::make("/viewOne");
   echo "second text";
}
  public function methodTwo(){
  // do something
  }
}
}

Какая проблема: если убрать строку <b>echo "some string for text";</b> то вообще ничего не выводится. Если строку оставить то в браузер выводится строка "some string for test" и все. Получается не отрабатывает View. В чем может быть проблема?

если создать маршрут
Route::post("/proc/methodOne", "CoreController@methodOne")

то вся View отработает как надо и все отобразится

Не в сети

#4 10.10.2014 14:00:35

Re: Сокращение Routes.

Спасибо! Как-то не внимательно прочитал доки(

Не в сети

Подвал раздела