EasyAdmin使用您自己的模板问题

时间:2019-03-13 17:34:18

标签: symfony twig symfony4 easyadmin

我正在尝试为EasyAdmin覆盖“新”模板,但是系统忽略了模板代码。 这是 easy_admin.yaml

的相关部分
entities:
       # List the entity class name you want to manage
      Places:
          class: App\Entity\Places
          templates:
              list: 'asdfasdf'

如您所见,列表属性的值无效,但系统会忽略它,并且可以正常工作,并且无法覆盖模板。

您有建议吗?

2 个答案:

答案 0 :(得分:1)

如果您使用 EasyAdmin 3.x,为此您可以覆盖在实体的控制器中指定它的特定模板,或者您可以像 symfony 一样创建自己的文件夹结构。

在这个例子中,我只覆盖了我的“学生”实体的编辑模板,如果你想改变你项目的所有编辑,你必须像 symfony 一样创建文件夹结构。

#include <Windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HWND hImageWindow;
void ImageWindows() {
    HBITMAP hFirstPic = (HBITMAP)LoadImage(NULL, L"test.bmp", (WPARAM)IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    LRESULT messageResult = SendMessageW(hImageWindow, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hFirstPic); //sending image to window
    //Error check
    DWORD error = GetLastError();
    if (error != 0) {
        LPTSTR output = NULL;
        FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&output, 0, NULL);
        MessageBox(NULL, output, L"Error. Reason:", MB_OK);
    }
    else {
        MessageBox(NULL, L"Image was assigned correctly!", L"Success", MB_OK);
    }
    //Error check
}
int WINAPI WinMain(_In_  HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_  LPSTR szCmdLine, _In_  int iCmdShow)
{
    static TCHAR szAppName[] = TEXT("hello windows");
    MSG msg;
    WNDCLASS wndclass;
    wndclass.style = CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hInstance = hInstance;
    wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = szAppName;
    if (!RegisterClass(&wndclass))
    {
        MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR);
    }

    HWND hwnd = CreateWindow(szAppName,
        TEXT("the hello program"),
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        NULL,
        NULL,
        hInstance,
        NULL);
    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);

    hImageWindow = CreateWindow(L"STATIC", L"background", SS_BITMAP | WS_CHILD | WS_VISIBLE, 0, 0, 300, 300, hwnd, NULL, NULL, NULL);
    ImageWindows();

    while (GetMessageW(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessageW(&msg);
    }
    return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hwnd, message, wParam, lParam);
}

您甚至可以结合使用这两种方法。假设除了只修改学生的模板 'edit' 之外,您还想修改 easyadmin 显示 flash 消息 的方式,为此您只需创建此结构在您的模板文件夹中:"templates\bundles\EasyAdminBundles\flash_messages.html.twig"

我留下了 EasyAdmin 3.x 文档的链接 overriding-templates

答案 1 :(得分:0)

因此,正如我在评论中提到的-由于某些原因,如果指定的模板不存在,easyadmin不会给出任何错误。因此,您只需要将新模板放置在templates文件夹(例如templates/admin/listPlaces.html.twig)中,然后在easyadmin的配置文件中指定正确的路径,例如:

entities:
    Places:
        class: App\Entity\Places
        templates:
             list: 'admin/listPlaces.html.twig'