2017-02-12 6 views
0

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

@if(Auth::check()) 
    {{ 
     redirect()->route('news') 
    }} 
@endif 

скрипт редиректа получает выход на экране, как это:

HTTP/1.0 302 Found Cache-Control: no-cache, private Location: http://localhost/red-sec/public/news <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta http-equiv="refresh" content="1;url=http://localhost/red-sec/public/news" /> <title>Redirecting to http://localhost/red-sec/public/news</title> </head> <body> Redirecting to <a href="http://localhost/red-sec/public/news">http://localhost/red-sec/public/news</a>. </body> </html> 

Пожалуйста, простите меня, если я сделал новобранец ошибку я очень новой для Laravel и новости маршрут установлен правильно и работает

EDIT 1: для первого комментария, да, вот мой web.php файл:

<?php 

/* 
|-------------------------------------------------------------------------- 
| Web Routes 
|-------------------------------------------------------------------------- 
| 
| Here is where you can register web routes for your application. These 
| routes are loaded by the RouteServiceProvider within a group which 
| contains the "web" middleware group. Now create something great! 
| 
*/ 

Route::get('/', function() { 
    return view('welcome'); 
})->name('home'); 

Route::post('/signup', [ 
    'uses' => '[email protected]', 
    'as' => 'signup' 
]); 

Route::post('/signin', [ 
    'uses' => '[email protected]', 
    'as' => 'signin' 
]); 

Route::get('/news', [ 
    'uses' => '[email protected]', 
    'as' => 'news', 
    'middleware' => 'auth' 
]); 
+0

является маршрут фактически назвал новость? т. е. в вашем файле маршрутов, есть ли у вас что-то вроде 'Route :: get ('/ news') -> name ('news')'? – dargue3

+0

Я отредактировал вопрос, пожалуйста, проверьте файл web.php, да, это –

+0

, похоже, он правильно генерирует скрипт перенаправления, но он распечатывает его на экране –

ответ

3

Вы не должны пытаться (и не может) перенаправлять в представлениях. Представления должны использоваться ТОЛЬКО для отображения данных, а не для ведения бизнес-логики.

Поскольку вы не используете контроллер, чтобы сделать какой-либо логики (вы возвращаетесь вид непосредственно от маршрутизатора), вы можете сделать что-то вроде этого:

Route::get('/', function() { 
    if(Auth::check()) { 
     return redirect()->route('news'); 
    } 

    return view('welcome'); 
})->name('home'); 

Текст, отображаемый на ваш взгляд, на самом деле ответ HTTP.

+0

oh ok так в файле web.php? но я не хочу, чтобы он всегда перенаправлял новости, если пользователь вошел в систему, только на странице приветствия. –

+0

. Самый простой способ - добавить эту проверку на домашний контроллер. – Laran

+0

ok, поэтому мне нужно создать домашний контроллер? но у меня нет домашней модели. мне нужна домашняя модель? –

2

, так что я предполагаю, что вы хотите посмотреть, не вошли ли они в систему, и если вы хотите перенаправить их на страницу входа? Это можно сделать в методе Route::get('/signin') на UserController. Перед тем как он возвращает вид входа в аккаунт вы могли бы сделать Auth::check(), и если это так, то сделайте redirect()->route('news')

Следует отметить, однако, что Laravel поставляется с тонной подмостей аутентификации уже на месте, which you can read about here.

В ваш web.php, есть это занять место / маршрута:

Route::get('/', function() { 
    if (Auth::check()) { 
    return redirect()->route('news'); 
    } 
    else { 
    return view('welcome'); 
    } 
} 
+0

я вижу, но страница входа также является главной страницей.Я хочу перенаправить с главной страницы на новости, если пользователь зарегистрирован в –

+0

, так что вы говорите, что в 'welcome.blade.php' у вас есть форма входа в систему, и если пользователь уже вошел в систему, вы скорее перенаправит их в '/ news', где вы можете вернуть представление' news.blade.php'? – dargue3

+0

это точно –

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