2016-11-03 133 views
1

我正在使用框架Phalcon。我試圖創建一個表格,以從名爲cliente的表(在mysql中)獲得一個值(ID爲「idcliente」),該表有兩列:「idcliente」和「nombre」。有了這個值,我想在另一個名爲Users的表上更新一個字段(也稱爲「idcliente」)。使用下拉式表格在Phalcon上不起作用

我的形式是這樣的:

class AsignarclienteForm extends Form{ 

    public function initialize($entity = null, $options = null){   
     $idcliente = new Select('idcliente',[ 
      Cliente::find(), 
      "useEmpty" => true, 
      "emptyText" => "Please select...", 
      "using" => ["idcliente", "nombre"], 
      ]); 
     $idcliente->setLabel('ID Cliente'); 
     $idcliente->addValidators(array(
      new PresenceOf(array(
       'message' => 'idcliente is required' 
       )) 
      )); 
     $this->add($idcliente); 
    } 
} 

而且我的控制器:

public function asignarclienteAction(){ 
    $auth = $this->session->get('auth'); 
    $permiso = $auth['active']; 
    $id = $auth['id']; 
    if($permiso!='A'){return $this->forward('servicios/index');} 

    $form = new AsignarclienteForm; 

    if ($this->request->isPost()) { 
      $idcliente = $this->request->getPost('idcliente'); 
      $sql = "UPDATE Users SET idcliente = ?0 WHERE id = ?1"; 
      $this->modelsManager->executeQuery($sql, array(0 => $idcliente, 1 => $id)); 
      return $this->forward('admin/usuarios'); 
     } 

    $this->view->form = $form; 
} 

而我的觀點:

 <div class="panel-body"> 
      {{ form('admin/asignarcliente/', 'id': 'asignarclienteForm', 'onbeforesubmit': 'return false') }} 
      <fieldset> 
       <div class="control-group"> 
       {{ form.label('idcliente', ['class': 'control-label']) }} 

        <div class="controls"> 
          {{ form.render('idcliente', ['class': 'form-control']) }} 
        </div> 
       </div> 
       <div class="form-actions"> 
        {{ submit_button('Asignar', 'class': 'btn btn-primary', 'onclick': 'return SignUp.validate();') }} 
       </div> 
      </fieldset> 
     </form> 
    </div> 

我在網站上的以下錯誤:

ID Cliente Catchable fatal error: Object of class Phalcon\Mvc\Model\Resultset\Simple could not be converted to string in C:\xampp\htdocs\OpinionZoom\cache\volt\c%%%%xampp%%htdocs%%opinionzoom%%app%%views%%admin%%asignarcliente.volt.php on line 31

其中第31行是{{ form.render('idcliente', ['class': 'form-control']) }} 在我看來

我還沒有找到如何創建一個形式選擇足夠的資料,儘管我已經創造了很多形式。

如果有人能幫助我,我會很感激。謝謝。

+1

一個問題:爲什麼你遍歷你看你的表單元素?你沒有在循環中使用'element'變量。現在,您只需輸出'idcliente'元素x次!還是僅僅爲了調試目的? – Timothy

+0

@蒂莫西良好的觀察。我剛剛複製了我在Web中找到的示例。但是你是對的,在我的其他形式中,我沒有for循環。謝謝:D已經出來。 –

回答

1

您的表單中的元素定義Asignarclienteform不正確。 Select的第一個參數必須是一個字符串(元素的名稱)。 第二個參數採用您選擇的元素的選項。

// Select construct parameters 
Select(string $name, [object | array $options], [array $attributes]) 

我感動idcliente出數組到第一個參數的位置是:

$idcliente = new Select('idcliente', Cliente::find(), [ 
    "useEmpty" => true, 
    "emptyText" => "Please select...", 
    "using"  => ["idcliente", "nombre"], 
]); 
+0

謝謝!現在錯誤發生了變化: '可捕獲的致命錯誤:類Phalcon \ Mvc \ Model \ Resultset \ Simple的對象無法轉換爲C:\ xampp \ htdocs \ OpinionZoom \ cache \ volt \ c %%%% xampp% %htdocs %% opinionzoom %% app %% views %% admin %% asignarcliente.volt.php on line 28' –

+0

我剛剛更新了我的問題:D –

+0

您確定您的代碼和錯誤消息是最新的,因爲它現在沒有意義..? 'form'不是'Phalcon \ Mvc \ Model \ Resultset \ Simple'類型。或者是? – Timothy