2016-05-24 2 views
0

У меня есть 2 маршрута один для получения и один для почтового метода. Для ПОЛУЧИТЬ маршрута, у меня есть 2 дополнительные параметры в маршруте, поэтому, когда метод пост называется это говорит об ошибке некоторый параметр отсутствуетРазный маршрут с разными параметрами для одного и того же метода в laravel

routes.php файл,

Route::get('/abc/{one}/{two}','[email protected]'); 
Route::post('/abc','[email protected]'); 

файл контроллера,

someFunction(Request $req, $first,$second){ 

problem is here when i use post method as there are no parameters 
and this function is expecting $first and $second parameters 

} 

Весь код такой же, если я использую два метода. Я получу эти параметры из url для получения и для сообщения я получаю их из формы. поэтому код все равно. Его избыток.

+0

Использовать два метода в вашем контроллере ?? Почему вы пытаетесь это сделать? Какую проблему он разрешает? – Steve

+1

Конечно, вы можете использовать параметры по умолчанию ('функция ($ first = null, $ second = null) {if ($ first) {...}'), но, ну, юк. не делайте этого - создайте отдельный метод! – Steve

+0

В настоящее время я использую 2 метода, весь код почти такой же, эти два параметра в методе post получают из формы и для получения метода am get from Url. Я чувствую его избыточным – Mann

ответ

1

Вы хотите отправить сообщение и получить как запрос таким же способом, если это возможно попробовать этот

someFunction(Request $req, $first = null, $second = null){ 

}

+0

вместе с комментарием @Steve if ($ first) {} завершает ответ – Mann

1

реорганизовать часть кода метода в 3-й закрытый метод, и вызывать его из методы два «действия»

class SomeController 
{ 

    private function doStuff($first, $second) 
    { 
     //lots of 
     //code here 
     //that you dont want 
     //to duplicate 
     return $first . $second; 
    } 

    public function getSomething($first, $second) 
    { 
     return $this->doStuff($first, $second); 

    } 

    public function postSomething($request) 
    { 
     return $this->doStuff($request->first, $request->second); 

    } 

} 

Если логика в doStuff достаточно долго, вы можете захотеть пойти дальше шаг и создать отдельный класс для обработки этой логики, и INJ ect it в контроллер:

class SomeService 
{ 
    public function doStuff($first, $second) 
    { 
     return $first . $second; 
    } 
} 

class SomeController 
{ 
    protected $someService; 

    public function __construct(SomeService $service) 
    { 
     $this->someService = $service; 
    } 


    public function getSomething($first, $second) 
    { 
     return $this->someService->doStuff($first, $second); 

    } 

    public function postSomething($request) 
    { 
     return $this->someService->doStuff($request->first, $request->second); 

    } 

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