2017-07-26 10 views
0

誰かが私が間違ったことを助けてくれますか?サーバーは内部サーバーエラー500を返します。コントローラーを取得できません。誰が私のミスはどこにあるのか説明できますか?ルーティングオートコンプリートパスにあると思いますが、わかりません。それはどうすれば私はそれを修正することができますか? はどうもありがとうございました、みんなDrupal 8カスタムオートコンプリートエラー500

マイフォームのオートコンプリートフォーム要素:

$form['field_father'] = array(
     '#title' => t('Father'), 
     '#type' => 'textfield', 
     '#autocomplete_route_name' => 'cows.autocomplete', 
     '#autocomplete_route_parameters' => array(), 
    ); 

モジュールルーティングファイル:

​​

コントローラコード:

namespace Drupal\cows\Controller; 

use Drupal\Core\Controller\ControllerBase; 
use Symfony\Component\HttpFoundation\JsonResponse; 


class CowsController extends ControllerBase 
{ 
    public function autocomplete(Request $request) 
    { 
     $matches = []; 
     $string = $request->query->get('q'); 

     $query = \Drupal::database()->select('node__field_name', 'fn'); 
     $query->fields('fn', ['field_name_value', 'entity_id']); 
     $query->addField('fg', 'field_gender_value'); 
     $query->join('node__field_gender', 'fg', 'fg.entity_id = fn.entity_id '); 
     $query->condition('fn.field_name_value', '%' . $string . '%', 'LIKE'); 
     $query->condition('fg.field_gender_value', array('bull','ox'), 'IN'); 
     $result = $query->execute(); 

     foreach ($result as $row) { 
     $matches[] = ['value' => $row->entity_id, 'label' => $row->field_name_value]; 
     } 

     return new JsonResponse($matches); 
    } 
} 

は、非常にありがとう多く

+0

名前空間を使用するsymfony \ Component \ HttpFoundation \ Request;あなたのコントローラファイルに。 – vishwa

答えて

0

名前空間を使用してRequest $要求をサポートします。

namespace Drupal\cows\Controller; 

use Drupal\Core\Controller\ControllerBase; 
use Symfony\Component\HttpFoundation\JsonResponse; 
/****this is newly added****/ 
use Symfony\Component\HttpFoundation\Request; 

class CowsController extends ControllerBase 
{ 
    public function autocomplete(Request $request) 
    { 
     $matches = []; 
     $string = $request->query->get('q'); 

     $query = \Drupal::database()->select('node__field_name', 'fn'); 
     $query->fields('fn', ['field_name_value', 'entity_id']); 
     $query->addField('fg', 'field_gender_value'); 
     $query->join('node__field_gender', 'fg', 'fg.entity_id = fn.entity_id '); 
     $query->condition('fn.field_name_value', '%' . $string . '%', 'LIKE'); 
     $query->condition('fg.field_gender_value', array('bull','ox'), 'IN'); 
     $result = $query->execute(); 

     foreach ($result as $row) { 
     $matches[] = ['value' => $row->entity_id, 'label' => $row->field_name_value]; 
     } 

     return new JsonResponse($matches); 
    } 
} 
0

実際に動作します。だから問題は解決されています。 私はそれを繰り返したいのですが、リクエストネームスペースを追加していませんでした。

symfony \ Component \ HttpFoundation \ Requestを使用しています。

ありがとう、@vishwa!