2013-03-16 1 views
0

В настоящее время я создаю приложение в yii-framework. Одной из целей приложения является возможность оценивать игры на разных предопределенных категориях и платформах. Игра может принадлежать нескольким платформам.Создать или обновить с помощью ajax в yii

Пример того, как это было бы: я хочу оценить игру под названием «x». Я вижу, что игра опубликована на 4 разных платформах, поэтому, когда я оцениваю игру, я выбираю платформу, на которой я играл. после этого я оцениваю игру по 5 различным категориям. Если позже я вернусь к этой игре, я смогу обновить этот рейтинг, но я также смогу создать новый рейтинг для другой платформы.

Это особенно последняя часть, о которой я не знаю. Мое предположение о том, как сделать это, - это создать раскрывающийся список с платформами, к которым принадлежит игра, и использовать некоторые функции AJAX, чтобы создать новый рейтинг или обновить существующий. однако я не знаю, как это сделать, поскольку я редко делал что-то с AJAX.

Не могли бы вы дать мне несколько советов о том, как достичь этого?

EDIT: Может показаться, что я не пробовал что-то, поэтому я опубликую некоторые из кода, который я создал до сих пор (по какой-то причине я назвал его ранжированием вместо рейтинга ...). Как вы можете видеть это без каких-либо AJAX и он не принимает к рассмотрению платформы:

protected function createRanking($model) 
    { 
     $user_id=Yii::app()->user->getId(); 
     $game_id=$model->id; 
     $rank=ranking::model()->find("create_user_id=$user_id and game_id=$game_id"); 

     if($rank===null){ 
     $ranking=new Ranking; 
     } 
     else{ 
     $ranking=$rank; 
     } 

     if(isset($_POST['Ranking'])) 
     { 
      $ranking->game_id=$model->id; 
      $ranking->attributes=$_POST['Ranking']; 

      $valid = $ranking->validate(); 
      if ($valid) 
      { 
       $ranking->save(false); 
       $this->redirect(array('index')); 
      } 
     } 
     return $ranking; 
    } 

ответ

1

http://www.yiiframework.com/wiki/394/javascript-and-ajax-with-yii/ http://api.jquery.com/jQuery.ajax/

Я думаю, вы должны прочитать те, первый (и есть некоторые PHP и Java-знание).

Если вы хотите использовать DropDowns, вы должны посмотреть EventHandlers (jQuery поможет вам с этим). С помощью селектора выпадающего списка вы можете прикрепить такой обработчик. Я больше не буду добавлять к этому, с ключевыми словами, которые я вам дал, вы должны найти отличную документацию по этой теме.

На стороне Yii вы обрабатываете AjaxRequest так же, как вы обрабатываете HTTP-запрос нормалей. Таким образом, у вас будет действие, в котором у вас есть поток управления, который проверяет наличие записи (findByPk будет вариантом).

Мне кажется, что у вас есть очень простые вопросы и предоставление вам кода облегчит вам работу в краткосрочной перспективе. Я действительно рекомендую работать через учебники по Yii-основы: http://www.yiiframework.com/doc/guide/ http://www.yiiframework.com/doc/blog/

Edit: Ваш вопрос до сих пор не очень понятно, имо (какого рода намеков в сторону недостатка чтения на эту тему). Как вы уже поняли, «isNewRecord» - это способ пойти, чтобы проверить, является ли это обновлением или созданием. Если есть какая-то проблема, связанная с этим, вам следует рассмотреть код публикации, содержащий его, и переработать вопрос.

Во всяком случае, здесь некоторые незначительные, не вопрос, связанный совет код:

$ranking = ranking::model()->findByAttributes(array(
    "create_user_id" => $user_id, 
    "game_id" => $game_id 
)); 

if($ranking===null) { 
    $ranking=new Ranking; 
} 

Ранжирование/ранг объявления переменной неясна, так как вы используете разные имена для одного и того же. Также, как показывает код выше, он не нужен. Также вы в основном использовали SQL в своем методе поиска, который считается довольно плохой практикой, поскольку вся идея Yii говорит только на языке БД, когда вокруг нет абсолютно никакого пути. Также пара-связывающий способ с массивом более безопасен (что в данном случае не вызывает большого беспокойства, я думаю).

+0

Я вижу, как это может показаться простым вопросом (и это может быть даже так), но я не могу понять, как заставить приложение решить, создать или обновить новую запись на основе того, выбранный в раскрывающемся списке. Это правда, что я все еще нахожусь на этапе обучения, но я не могу найти ответ в Интернете, и я не могу понять это сам. – Deram

+0

@Deram stackoverflow помогает тем, кто помогает себе. Что вы пробовали? У вас есть структура базы данных? Если да, используете ли вы 'CActiveRecord' (функция сохранения обрабатывает вставку/обновление для вас: http://www.yiiframework.com/doc/api/1.1/CActiveRecord#save-detail)? Вы пробовали версию, отличную от AJAX? Это работает? Если нет, какие у вас проблемы? – topher

+0

Я создал некоторые из них без AJAX (но не с функцией isNewRecord). Я не так сильно смотрел на эту функцию, так как я хочу, чтобы пользователь мог посмотреть, каков был его последний рейтинг (и я не верю, что это делаетNewRecord для вас, но я могу ошибаться?) – Deram

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