0

这是我的小故事:我在我的实体帐户上使用 DoctrinExtensions Tree。用户可以在 UI 中编辑树,然后将其保存。我将所有帐户的数组发回给 PHP。然后我想将它重建为树并使用扩展的方法保存/编辑帐户。

所以我想将 UI 返回的数组与数据库中的原始树进行比较。我通过执行以下操作获取数据:

$repo = $em->getRepository('NRtworksChartOfAccountsBundle:Accounttree');
$arrayTree = $repo->findAll(); 

所以我把我的树放在一个数组中。我现在想要的是通过它的 ID 在这个数组中找到一个对象。我知道如何编写函数,但在 MVC 中,我不知道编写和调用它的正确位置是什么,也不知道它是否是正确的方法。

我试图创建一个文件夹“模型”和一个文件 Functions.php,如下所示:

 namespace NRtworks\ChartOfAccountsBundle\Model;

 function get_account_from_id($array)
 {
    return "true";    
 }

然后从我的控制器调用它

use NRtworks\ChartOfAccountsBundle\Model\Functions;
get_account_from_id($arrayTree);

但这不起作用。请告知我应该如何做到这一点,以及在 MVC 理念的范围内是否有更正确的方法。

谢谢

4

2 回答 2

0

您应该编写自定义服务并将逻辑放入其中。文档:http ://symfony.com/doc/current/book/service_container.html#what-is-a-service

更新(代码示例):

Les 在 Container 中配置服务:

# app/config/config.yml
services:
    your_service:
        class:        NRtworks\ChartOfAccountsBundle\Service\YourService

现在,您的服务类:

namespace NRtworks\ChartOfAccountsBundle\Service;

class YourService {
    public function getAccountFromId(array $array)
    {
        return "true";
    }
}

现在您可以从容器中获取此服务,例如:

class SomeController extends Controller {
    public function someMethod() {
        $yourService = $this->get('your_service');
    }
}

您甚至可以将存储库类注入此服务,例如:

# app/config/config.yml
services:
    app.accounTtree.repository:
        class:           Doctrine\ORM\EntityRepository
        factory-service: doctrine.orm.entity_manager
        factory-method:  getRepository
        arguments: 
            - "App\MainBundle\Entity\Gallery"

    your_service:
        class:        NRtworks\ChartOfAccountsBundle\Service\YourService
        calls: 
            - [ setRepository, ["@app.accounTtree.repository"]]

只需修改您的服务:

namespace NRtworks\ChartOfAccountsBundle\Service;

class YourService {
    protected $repository;

    public class setRepository($repository) {
        $this->repository = $repository;
    }

    public function getAccountFromId(array $array)
    {
        return "true";
    }
}
于 2014-03-09T22:44:39.397 回答
0

如果我们谈论的是从学说中获取的自定义数据处理,那么使用Repository类可能会更好。它就是为此目的而设计的。

于 2014-03-10T08:40:05.850 回答