Я создаю приложение, которое использует шаблон репозитория. Теперь то, что я сделал, - это функция повторного использования, но я немного ударил икоту. У меня есть один вид, который показывает несколько разных моделей. Эти модели связаны между собой соотношением «один к одному» (MovieBasic to MovieDetail) и отношения «один ко многим» (MovieBasic to MoviePersonnel). Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть два разных запроса для проверки моих форм. Это MovieBasicRequest, который проверяет основную информацию моего фильма (Title, Synopsis) и MovieDetailRequest, которая проверяет подробную информацию о моем фильме (цена, тип экрана, время исполнения и т. Д.). Таким образом, чтобы различать, какой запрос использовать я добавил параметр к моему URL следующим образом:Laravel 5.0 - Использование запроса в функции
movie_basic.blade.php
<?php $params = ['id' => $movie->id, 'type' => 'movie_basic']; ?>
<h4>Movie Baiscs <span class="pull-right"><a href="{{ action('[email protected]', $params) }}">Edit</a></span></h4>
<hr>
<table class="table table-bordered">
<tbody>
<tr>
<td>{{ $movie->movie_title}}</td>
</tr>
<tr>
<td>{{ $movie->movie_synopsis }}</td>
</tr>
</tbody>
</table>
Я знаю, что с помощью <?php ?>
тегов не лучшая практика, но я очистит это позже. Так из-за моего $params
URL-адрес будет выглядеть так
www.moviesite.dev/1/edit?movie_basic
который будет вызывать функцию редактирования в контроллере, как так
MovieController.php
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
$movie = $this->movieBasic->find($id);
return view('cms.edit', compact('movie', 'type'));
}
В этом случае тип на самом деле не играет роли из-за взаимосвязи между моделями MovieBasic и MovieDetail. Однако он все же играет определенную роль в моей функции обновления ниже:
MovieController.php
/**
* Update the specified resource in storage.
*
* @param int $id, MovieBasicRequest $request
* @return Response
*/
public function update($id)
{
if(strcmp($_GET['type'], 'movie_basic') == 0)
{
$movie = $this->movieBasic->find($id);
$this->request = new MovieBasicRequest;
$this->movieBasic->update($id, $this->request);
}
elseif(strcmp($_GET['type'], 'movie_detail') == 0)
{
$movie = $this->movieBasic->find($id);
$this->request = new MovieDetailRequest;
$this->movieDetail->update($id, $this->request);
}
return redirect()->action('[email protected]', compact('movie'));
}
По сути, эта функция делает это определить, что передается в и оттуда вызвать правильный запрос. Однако, как у меня сейчас, он просто создает пустой массив и, таким образом, ничего не проверяет. Есть ли способ использовать эти запросы для проверки переданной информации? Или для проверки ввода, прежде чем передать его функции обновления хранилища?
PS. Я также пробовал:
$this->movieBasic->update($id, MovieBasicRequest $request);
но я получаю сообщение об ошибке «Неопределенная переменная $ запрос».
Это должно быть что-то вроде 'public function update (MovieRequest $ request, $ id)', пожалуйста, просмотрите раздел Validation документации. – user2094178