public function validateMovieExist($key) { $movie = Movie::model()->findByPk($this->movieId); if (!$movie) { $this->addError($key, 'Такого ролика не существует в базе данных.'); } }
private function _getModelById($id, $with = array()) { $model = Movie::model()->with($with)->findByPk($id); if (!$model) { // TODO: Сделать нормальное исключение throw new \CHttpException(404, 'Модель не найдена'); } return $model; }
/** * @param null $movieId - позволяет указать для какой игры мо хотим создать ролик * @param null $movieFileType - позваляет указать какой тип файла мы хотим создать * @throws \Exception * @throws \app\components\Exception */ public function actionCreate($movieId = null, $movieFileType = null) { $movie = Movie::model()->with('game')->findByPk($movieId) ?: new Movie(); $movieFile = new Movie\File(); if ($movieFileType) { $movieFile->setAttribute('type', (int) $movieFileType); } $movieFileForm = $this->_createParamsForm(self::SCENARIO_CREATE, $movie, $movieFile); $this->_tryAjaxValidation($movieFileForm); $backUrl = $this->_getBackUrl(); if (Yii::app()->getRequest()->getIsPostRequest()) { $movieFileForm->setAttributesByPost(); if ($movieFileForm->save()) { $this->redirect($backUrl); } } $this->render('create', array('movieFile' => $movieFile, 'movieFileForm' => $movieFileForm, 'backUrl' => $backUrl)); }
/** * @param string $search Поисковая строка */ public function actionGetMovieList($search = '') { $criteria = new CDbCriteria(); // X-TODO: Сделать разбиение на части на клиенте if (strpos($search, '-') !== false) { list($gameSearch, $movieSearch) = explode('-', $search); $gameSearch = $search = $this->_prepareSearchString($gameSearch); $movieSearch = $search = $this->_prepareSearchString($movieSearch); $criteria->addSearchCondition('t.title', $movieSearch); $criteria->addSearchCondition('game.title', $gameSearch); } else { $search = $this->_prepareSearchString($search); $criteria->addSearchCondition('t.title', $search); $criteria->addSearchCondition('game.title', $search, true, 'OR'); } $criteria->order = 't.title ASC'; $movies = Movie::model()->with('game')->findAll($criteria); $data = array(); foreach ($movies as $movie) { $data[] = array('id' => $movie->id, 'title' => $movie->title, 'game' => array('id' => $movie->game->id, 'title' => $movie->game->title)); } $this->_sendAnswer($data); }