2014-01-20 4 views
2

Я использую Yii в качестве php-сервера для мобильного приложения с использованием REST API. Я вижу, что объект данных xhr на клиенте содержит правильные значения json-encoded. У меня есть «безопасный» атрибут, установленный в моем классе модели следующим образом:Yii - вставка нулевых значений в db, набор атрибутов 'safe'

array('user_id, last_visit, first_visit, blah, 'safe', 'on'=>'search') 

И вставка происходит по назначению. Единственная проблема заключается в том, что значения null вставляются для всех полей, за исключением ключевого слова auto-increment primay. Я следовал этому полезному блогу почти дословно, Create a REST API, и он работает довольно просто и хорошо. Я просто не знаю, как отлаживать вставки нулевого значения.

я огонь этот метод на стороне клиента

upload.open("POST", "http://localhost:8888/dashboard/index.php/api/tracker");

затем отправить его

upload.send(JSON.stringify(_xhrData));

который затем вызывает этот метод на сервере:

public function actionCreate() 
    { 
     switch ($_GET['model']) { 
      // Get an instance of the respective model 
      case 'tracker': 
       $model = new Tracker; 
       break; 
      default: 
       $this->_sendResponse(501, 
        sprintf('Mode <b>create</b> is not implemented for model <b>%s</b>', 
         $_GET['model'])); 
       Yii::app()->end(); 
     } 
     // Try to assign POST values to attributes 
     foreach ($_POST as $var => $value) { 
      // Does the model have this attribute? If not raise an error 
      if ($model->hasAttribute($var)) 
       $model->$var = $value; 
      else 
       $this->_sendResponse(500, 
        sprintf('Parameter <b>%s</b> is not allowed for model <b>%s</b>', $var, 
         $_GET['model'])); 
     } 
     // Try to save the model 
     if ($model->save()) 
      $this->_sendResponse(200, CJSON::encode($model)); 
     else { 
      // Errors occurred 
      $msg = "<h1>Error</h1>"; 
      $msg .= sprintf("Couldn't create model <b>%s</b>", $_GET['model']); 
      $msg .= "<ul>"; 
      foreach ($model->errors as $attribute => $attr_errors) { 
       $msg .= "<li>Attribute: $attribute</li>"; 
       $msg .= "<ul>"; 
       foreach ($attr_errors as $attr_error) 
        $msg .= "<li>$attr_error</li>"; 
       $msg .= "</ul>"; 
      } 
      $msg .= "</ul>"; 
      $this->_sendResponse(500, $msg); 
     } 
    } 

I не получайте ошибок, просто следующее сообщение о состоянии на клиенте

[INFO] {"user_id":"19","last_visit":null,"first_visit":null,"locale":null,"this_visit":null,"latitude":null,"longitude":null,"device_maker":null,"device_model":null,"os_platform":null,"os_version":null,"opted_out":null,"opted_in":null,"modified":null,"model_type":null}

я бы очень признателен за любую помощь по отладке этого. Благодарю.

+0

удалить ' "на"=> "Поиск"' –

+0

@AlirezaFallah я удалил его, но это не имело никакого эффекта. Тот же результат, что и раньше. –

+0

Не могли бы вы рассказать мне, где и как вы передаете свои данные через REST? –

ответ

0

Наиболее вероятно, что ваши данные размещены неправильно. Попробуйте распечатать $ _POST и посмотреть, что он возвращает.

print_r($_POST); 
Смежные вопросы