Маршрутизация Laravel с помощью цикла через массив - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь использовать метод Route :: get для настройки структуры URL для моего приложения без повторения Route :: get для каждого элемента.Я делаю это с циклом foreach следующим образом:

<?php

Route::get('/', function () {
    return view('welcome');
});
$pages = array('about', 'contact', 'faqs');  
foreach ($pages as $page) {
    Route::get($page, function () {
        return view($page);
    });
}

При запуске я сталкиваюсь с ошибкой: «Неопределенная переменная: страница».Хотя я много работал с процедурным PHP и PHP внутри CMS, я довольно новичок в Laravel.Что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

вы можете сделать where методом

$pages = array('about', 'contact', 'faqs');  
Route::get('/{page}',function($page) {
    return   view($page);
})->where('page',implode('|',$pages));
0 голосов
/ 04 октября 2018

$page переменная не входит в область действия анонимной функции [A], в которой вы определили, на какой маршрут следует отвечать.В приведенном ниже коде добавлено use ($page), чтобы к переменной можно было получить доступ.

<?php

Route::get('/', function () {
    return view('welcome');
});
$pages = array('about', 'contact', 'faqs');  
foreach ($pages as $page) {
    Route::get($page, function () use ($page) { // [A] 
        return view($page);
    }); 
}

Здесь вы можете прочитать некоторые подробности о нюансах этого поведения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...