2016-11-03 6 views
1

私はフレームワークPhalconを使用しています。私は、 "idcliente"と "nombre"の2つの列を持つclienteというテーブル(mysql)から値(IDclienteというID)を取得するためのフォームを作成しようとしています。この値を使って、Usersという別のテーブルのフィールド(「idcliente」)も更新したいと考えています。ドロップダウンを使用しているフォームはPhalconでは機能しません

私のフォームはこれです:私はウェブサイトで、次のエラーを得た

 <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> 

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; 
} 

そして、私のビュー

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の最初のパラメータは、文字列(要素の名前)でなければなりません。 2番目のパラメータは、選択要素のオプションを取ります。

// 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

ありがとうございます! 'Catchable fatal error:クラス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

関連する問題