2017-01-27 5 views
1

В настоящее время я изучаю laravel и для своего небольшого проекта, и сейчас у меня небольшие проблемы.Путь к проблемам контроллера

Я пытаюсь обрабатывать ввод PHP в URL-адрес, т.е. http://example.com/?page=post&id=1
настоящее время у меня это в мой контроллер для post.blade.php

public function post($Request $request) 
{ 
    $page = $request->input('page'); 
    $id_rilisan = $request->input('id'); 
    $post = Rilisan::where('id_rilisan', '=', $id_rilisan)->first(); 
    if($post = null) 
    { 
    return view('errors.404'); 
    } 
    return view('html.post') 
      ->with('post', $post); 
} 

и это контроллер

Route::get('/', '[email protected]'); 
Route::get('/{query}', '[email protected]'); 

Как обрабатывать вход php для маршрутизации на контроллер? Я сейчас очень смущен, я попробовал несколько других методов для маршрута :: получить

ответ

1

Этот маршрут Route::get('/', '[email protected]') направляет пользователя к index маршруту. Так что, если вы не можете изменить структуру URL, и вы должны использовать эту структуру, вы должны получить параметры URL в index маршрут, как это:

public function index() 
{ 
    $page = request('page'); 
    $id = request('id'); 
+0

Так что мне не нужен другой маршрут :: получить? – nothingexceptme

+0

@nothingexceptme, если вы его не используете, вы можете удалить его. Второй маршрут будет улавливать URI, такие как '/ some-string' –

0

Вы можете использовать его в качестве параметра на контроллере :-) увидеть этот ответ пожалуйста: https://laravel.io/forum/07-26-2014-routing-passing-parameters-to-controller

, например, параметр запроса в маршрут будет $ параметр запроса в методе контроллера :-)

Так как это:

Route::get('/{query}', '[email protected]'); 
//controller function 
public function controllerfunc($query){} 
0

Почему вы должны использовать параметры запроса в URL. Вы можете просто использовать эту структуру http://example.com/posts/1

Тогда ваши маршруты будут выглядеть следующим образом:

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

И вы будете иметь возможность получить доступ к Post модели сразу в методе шоу. Пример:

public function show(Post $post) { 
    return view('html.post', compact('post')); 
} 

Посмотрите, как мало ваш код прямо сейчас.

+0

Спасибо за предложение, но я бы хотел, чтобы это было так, и функция должна получить данные из базы данных. – nothingexceptme

+0

Это тоже получается из базы данных. Post model получит все, что вам нужно от базы данных. – zgabievi

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