laravel 5.2 перенаправить с сообщением

если пользователь сайта посещает /page, я хочу, чтобы он перенаправлялся на индекс с сообщением. Как получить доступ к сообщению перенаправления в поле зрения? Мои маршруты:

Route::group(['middleware' => 'web'],function(){ 
     Route::get('/page', function () {
         return redirect('/')->withMessage(["warning"=> ["yeah","test"]]); // According official docs, this should work.
     }); 
     Route::get('/', 'Page@front');
});

Мой контроллер страницы:

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\News;
use App\PageContact;
use Session;

class Page extends Controller{
    public function front(Request $Request){
        return view('index')->withNews("news");
}

Важно: да, мои страницы уже упакованы в промежуточное программное обеспечение. И, пожалуйста, не публикуйте решения Laravel 3 или Laravel 4.


person Fusion    schedule 28.03.2016    source источник


Ответы (2)


Так должно быть:

->with('warning', 'testing')

Затем в представлении:

@if(session()->has('warning'))
    {!! session()->get('warning') !!}
@endif
person user2094178    schedule 28.03.2016
comment
Вы были правы, за исключением одного: $warning не объявляется таким образом, поэтому к нему нельзя получить доступ в представлениях. Вместо этого вы можете получить переменную с помощью session()->get('warning'). - person Fusion; 28.03.2016

Ответ от пользователя 2094178 правильный, но вам не обязательно использовать

->with('warning', 'testing')

это также может быть (как вы сделали):

->withNews("news");
->withWarning('testing');

Так как View-класс использует волшебную функцию "__call":

     /**
     * Dynamically bind parameters to the view.
     *
     * @param  string  $method
     * @param  array   $parameters
     * @return \Illuminate\View\View
     *
     * @throws \BadMethodCallException
     */
    public function __call($method, $parameters)
    {
        if (Str::startsWith($method, 'with')) {
            return $this->with(Str::snake(substr($method, 4)), $parameters[0]);
        }

        throw new BadMethodCallException("Method [$method] does not exist on view.");
    }
person d33k4y    schedule 01.07.2016