2017-07-26 213 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;在你的Controller文件中。 – 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!