В Slim, как передать переменную GET для рендеринга

Я работаю со Слимом совсем недавно. Я все еще на второй версии. Пока все идет хорошо, но я наткнулся на небольшую загадку. У меня есть страница, которая отображает содержимое на основе переменной GET в конце URL. URL выглядит следующим образом …

http://localhost/trailcache.com/checklist/21

Первая строка маршрута get выглядит следующим образом …

$app->get('/checklist/:Id', function($Id) use($app) {

Это заканчивается так …

})->name('checklist');

Этот параметр Id контролирует, какую информацию я добавляю на страницу, и все идет хорошо, но теперь я добавил контактную форму и вместе с ней некоторую проверку. Я пишу в БД и рендеринг нового контента в порядке. Проблема возникает, когда я пытаюсь отправить ошибки обратно на страницу. В настоящее время это выглядит так …

$app->render('user/checklist.php', [
'Id' => $Id,
'errors' => $v->errors(),
'request' => $request
])->name('checklist');

Это не работает Страница пуста. URL возвращается …

http://localhost/trailcache.com/checklist

Документация для рендера показывает …

$app->get('/books/:id', function ($id) use ($app) {
$app->render('myTemplate.php', array('id' => $id));
});

Разве это не будет работать в почтовом маршруте так же? Это есть на всех моих других страницах.

Как можно передать эти ошибки вместе с правильной переменной GET, чтобы отображался правильный контент?

0

Решение

Это работает для меня просто отлично.

return $this->renderer->render('myTemplate.php', array('id' => $id));

Надеюсь, это работает для вас.

0

Другие решения

После нескольких дней борьбы с этим я нашел решение. Сначала я открыл map () и изменил первую строку на …

$app->map('/checklist/:Id', function($Id) use($app) {

и конец …

})->via('GET', 'POST')->name('checklist');

так что теперь маршрут отображается одинаково, независимо от того, идет ли он от почты или до. Затем я указал форму на этот названный маршрут …

<form action="{{ urlFor('checklist', {Id: Id}) }}" class="form" method="post">

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

if($app->request->isPost()) {

и поместите код проверки внутри. Обновление страницы после отправки формы повторно отправляет форму, поэтому, если проверка прошла успешно, я добавил …

return $app->response->redirect($app->urlFor('checklist', array(
'Id' => $Id
)));

Все, что мне нужно было сделать, это передать ошибки в шаблон, и он, кажется, работает отлично.

0

По вопросам рекламы [email protected]