2017-06-14 20 views
0

Zend Framework 1プロジェクトでサービスレイヤーを注入しました。このプロジェクトには、アンドロイドなどのデバイス用のREST APIもあります。 CustomerService.phpクラスは、すべての顧客の作成ロジックを処理し、APIとデフォルトモジュールの両方にCustomerController.phpによって消費されている間、私のプロジェクトのレイアウトは、このzf1バリデータを使用してサービス中のモデルを検証する方法は?

Application 
modules 
     default 
     controller 
      CustomerController.php [for web] 
     api 
     controllers 
       CustomerController.php [for android device] 
services 
    CustomerService.php 

のように見えます。フォームを使用してWebでユーザーから送信された値を簡単に検証できます。検証のために正面と背面の両方のコントローラにコードの繰り返しがないように、サービス中のユーザーから送信された値を検証するにはどうすればよいですか?あなたはAPIコントローラで、ウェブコントローラにデータを検証するために、同じフォームクラスを使用することができます

答えて

0

:あなたのAPIで

$form = new CustomerForm(); 
if ($this->getRequest()->isPost()) { 
    if ($form->isValid($this->getRequest()->getPost()) { 
     // persist your Customer here, then redirect 
    } 
} 
$this->view->form = $form; 

ウェブコントローラでは、おそらくのようなものを持っていますコントローラでは、フォームを同じ方法で使用します。検証に失敗した場合は、フォームエラーを返すだけです。

$form = new CustomerForm(); 
if ($this->getRequest()->isPost()) { 
    if ($form->isValid($this->getRequest()->getPost()) { 
     // Validation passed. 

     // TODO: persist your Customer here, then send back the Customer data (as JSON/XML). 

     return; 

    } else { 
     // Validation failed. Send back form error messages and set HTTP response code to 400 (bad request) 
     $this->getResponse()->setHttpResponseCode(400); 
     $errors = $this->form->getMessages(); 

     // TODO: send your errors here (as JSON or XML) 
    } 
} 
関連する問題