tangoman/repository-helper

Symfony 仓库助手

3.0.2 2018-04-08 21:03 UTC

This package is auto-updated.

Last update: 2024-09-16 23:21:07 UTC


README

TangoMan 仓库助手 提供了一些对仓库有用的功能。

安装

步骤 1: 下载包

打开命令行控制台,进入您的项目目录,并执行以下命令以下载此包的最新稳定版本

$ composer require tangoman/repository-helper

此命令要求您全局安装了 Composer,具体请参阅 Composer 文档的安装章节

用法

在您的仓库内

添加 "use" 声明,就像使用特质一样。

<?php

namespace FoobarBundle\Repository;

use Doctrine\ORM\EntityRepository;
use TangoMan\RepositoryHelper\RepositoryHelper;

/**
 * Class FoobarRepository
 */
class FoobarRepository extends EntityRepository
{
    use RepositoryHelper;
}

在您的控制器内

use Symfony\Component\HttpFoundation\Request;

class FoobarController extends Controller
{
    /**
     * @Route("/")
     */
    public function indexAction(Request $request)
    {
        // Show searchable, sortable, paginated user list
        $em = $this->get('doctrine')->getManager();
        $foobars = $em->getRepository('AppBundle:Foobar')->findByQuery($request);

        return $this->render(
            'admin/foobar/index.html.twig',
            [
                'foobars' => $foobars,
            ]
        );
    }

在您的视图内

搜索表单

<label for="inputUser">User</label>
<input type="text" name="user-username" id="inputUser" class="form-control"
    value="{{ app.request.get('user-username')|join(', ') }}"/>

将生成以下内容:.../admin/posts/?user-username=admin

排序链接

<th class="{{ app.request.query.get('order') == 'user-username' ? app.request.query.get('way', 'ASC') }}">
    <a href="{{ path('app_admin_post_index', app.request.query.all|merge({
        'page'  : 1,
        'order' : 'user-username',
        'way'   : app.request.query.get('order') == 'user-username'
        and app.request.query.get('way', 'ASC') == 'ASC' ? 'DESC' : 'ASC'})) }}">
        User
    </a>
</th>

将生成以下内容:.../admin/posts/?page=1&order=user-username&way=ASC

公共辅助方法

查询参数

开关

模式/操作员的开关值

错误

当 symfony 抛出以下 QueryException 异常时

[语义错误] 行 X,列 XX 附近 'foo LIKE':错误:无效的 PathExpression。必须是 StateFieldPathExpression。

这意味着您的表单中存在错误: <input name="foo-bar">,属性未针对适当的连接实体。

尝试 <input name="foo-bar-title"><input name="bar-title">TangoMan 仓库助手 将自动处理连接。

注意

如果您发现任何错误,请在此处报告:问题

许可证

版权 (c) 2018 Matthias Morin

License 在 MIT 许可证下分发。

如果您喜欢 TangoMan 仓库助手,请给它加星!并关注我的 GitHub:TangoMan75 ... 并查看我的其他酷项目。

Matthias Morin | LinkedIn