Drupal 8自定义自动完成错误500
问题描述:
任何人都可以帮我解决我做错了什么?服务器返回内部服务器错误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);
}
}
非常感谢你太多
答
使用名称空间来支持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);
}
}
答
真的有效。所以问题解决了。 只是我想重复一遍 - 我错过了添加请求命名空间:
使用Symfony \ Component \ HttpFoundation \ Request;
谢谢,@vishwa!
添加命名空间使用Symfony \ Component \ HttpFoundation \ Request;在你的Controller文件中。 – vishwa