我想在编辑页面中显示与实体无关的信息。根据官方文档可以用configureResponseParameters-function来解决。
所以我将该功能实现到我的 CRUD 控制器中。
知道为什么吗?
如何将数据传递到我的 EDIT-twig 模板?非常感谢!
PersonCrudController.php
class PersonCrudController extends AbstractCrudController {
public function configureCrud(Crud $crud): Crud {
$crud->setFormThemes([
'mystuff/person_edit_form.html.twig', '@EasyAdmin/crud/form_theme.html.twig'
]);
return $crud;
}
public function configureFields(string $pageName): iterable {
// ...
yield TextField::new('specialDisplay')->setFormTypeOption('mapped', false);
// ...
}
public function configureResponseParameters(KeyValueStore $responseParameters): KeyValueStore
{
$responseParameters->set('testtesttest', '123xyz');
return $responseParameters;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
mystuff/person_edit_form.html.twig
{% block _Person_specialDisplay_row %}
{{ testtesttest }} {# throws: Variable "testtesttest" does …Run Code Online (Sandbox Code Playgroud) 我不喜欢索引页面(EasyAdmin 3 / symfony 5)上每个实体末尾的“编辑”按钮,我希望表行可单击,它将直接将我发送到编辑-页。
我想解决方案必须使用 Javascript,所以我开始:
class PersonCrudController extends AbstractCrudController {
[...]
public function configureFields(string $pageName): iterable {
[...]
yield TextField::new('fullName', 'Name')->onlyOnIndex()->setCssClass('js-row-action');
[...]
}
[...]
}
Run Code Online (Sandbox Code Playgroud)
// call functions once page is loaded
document.addEventListener("DOMContentLoaded", function() {
makeTableRowClickable();
});
function makeTableRowClickable() {
let elements = document.getElementsByClassName('js-row-action');
for (let i = 0; i < elements.length; i++) {
let td = elements[i];
let tr = td.parentNode;
tr.addEventListener("click", function (e) {
alert('click the row, Jack!');
});
}
}
Run Code Online (Sandbox Code Playgroud)