2015-08-04 5 views
0

У меня есть функция в цикле:Как получить доступ к переменной вне области видимости в php?

for ($i=1; $i<=10; $i++) { 
    Route::get('/projects/oop/'.$i, function(){ 
     return View::make('projects.oop'. $i); <--- This line give me a problem. 
    }); 
}; 

я получаю:

я не определен.

Как исправить это, чтобы я мог получить доступ к переменной $i?

+3

'PHP' не' Javascript'. Вы не можете объединить строки, используя '+' в 'PHP' (http://php.net/manual/en/language.types.string.php#language.types.string.useful-funcs). – axiac

+0

Я исправил его. Благодарю. Я немного смутился. – ihue

ответ

2

Это не правильный способ обработки динамических маршрутов маршрута в laravel.

Что вам нужно сделать, так это удалить этот неприятный цикл for, тогда вам нужно передать динамическое значение в качестве третьего аргумента в этот маршрут.

Route::get('/projects/oop/{id}, '[email protected]'); 

Теперь вам нужно перейти в каталог контроллеров и создать контроллер под названием:

class ProjectsController extends BaseController { 
    function oop($id){ 
     return View::make('projects.oop.'.$id); 
    } 
} 

Теперь ваш маршрут будет правильно передать запрос к классу ProjectsController, который затем imeplement функции уп и передать {id} из Маршрута в функцию в качестве аргумента.

+0

Я думаю, что '$ id' всегда будет« установлен »в вашем примере, не так ли? По моему опыту лучше оставить '$ id' без значения по умолчанию, а затем проверить' is_null ($ is) '. –

+0

@ JakeWilson. Вы можете быть совершенно правы в этой точке, так как без идентификатора в конце маршрута этот маршрут не будет разрешаться в любом случае. Я отрегулирую свое условие, чтобы это отразить. – Ohgodwhy

+1

@ halfer да, должно, спасибо. – Ohgodwhy

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