Подскажите по этому проекту кое что (https://github.com/annbin000/cinema_mvc)
есть вложенные темплейты с выгрузкой с бд как на скрине, подскажите как выгрузитьб инфу с бд о этих фильмах и при нажатии открывать в новой странице.
У меня есть модель /app/Models/Films.php в которой я записала методы гет сет на каждое поле.
Дальше есть сервис app/Services/FilmService.php В нем я выбираю все информацию о фильмах
$sql = <<<SQL
select films.*
from films
where films.id = :id
SQL;
После чего идет код с подключением к бд и получении по айди велью и тд.
Дальше есть контроллер app/Controllers/FilmController.php и в нем такой метод
public function execute()
{
$filmService = new FilmService();
$view = new View();
$result = $view->show(Films::class);
return $result;
}
После чего передаю все во вьюху app/Views/Film.php
class Film extends AbstractBlock implements ViewInterface
{
protected function getVars(): array
{
$filmService = new FilmService();
return [
'films' => $filmService->findOneFilm()
];
}
}
После чего есть темплейт templates/film.phtml
В котором я по идее должна выгрузить инфу о фильме а в темплейте templates/comeout.phtml передать ссылку на этот фильм, подскажите как это сделать
Все почти сделанно, дальнейший код будет предоставлен на основе твоего, вообще способ немного запутьанный.
С Сервисом FilmService.php
все норм, так и оставим.
В FilmController.php
в принципе все верно, но я вижу ты пыталась сделать на примере своего кода из CinemaController.php
, но ComeOutController.php
тебе больше поможет
public function execute() {
$view = new Film();
$result = $view->render();
return $result;
}
show там не нужна ибо ты уже переписала все на render. С контроллером все, если все хорошо, то при наведении на new Film();
у тебя должно редиректнуть на твою вьюху. К ней и перейдем.
Там на примере так же твоего кода нужно чет такое.
class Film extends AbstractBlock implements ViewInterface
{
private $id;
public function setFilm(int $id): Film {
$this->id = $id;
return $this;
}
protected function getVars(): array
{
$id = $this->id ?? (int) $_GET['id'];
$filmService = new FilmService();
$temp = $filmService->findOneFilm($id);
return [
'film' => $filmService->findOneFilm($id)
];
}
}
В самом темплейте фильма поправь вот так.
<?php /** @var \App\Models\Films $film */ ?>
<ul>
<li>Имя: <?= $film->getName() ?></li>
</ul>
а в темплейте comeout сделай
<?php /** @var \App\Models\Films[] $comeOut */ ?>
<?php foreach ($comeOut as $film): ?>
<li><a href="<?= "film/?id=" . $film->getId() ?>"><?= $film->getName() ?></a></li>
<?php endforeach; ?>
Теперь, по идее должно по нажатию переходить на урл типа https://site.com/film/?id=1 Ну и там теперь в дебагере посмотри какие у тебя еще поля приходят и добавь их для полноценной картины о фильме.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть класс, который наследуется от orgjunit
Нужно сделать авто логин в приложенииСоздано оно на Android Studio и авторизация на Firebase
У меня есть 3д вектор который хранит в себе Yaw, Pitch, Length