我正在用ZF2和Doctrine开发一个项目.我试图在表单创建中使用Doctrine Hydrator,如本教程所示.在此方法中,将在控制器中创建ObjectManager对象,并在实例化时将其传递给新表单.当我想使用ZF2的FormElementManager时,将ObjectManager对象从控制器传递到表单会产生问题,因为ZF2要求我通过Zend\Form\FormElementManager获取表单类的实例,而不是直接实例化它.为了解决这个问题,我已经基于如何通过ZF2 FormElementManager将Doctrine ObjectManager传递给表单的问题的答案创建了表单和字段集工厂..该问题的答案中提供的方法适用于典型的fieldset元素,但我需要确定如何包含集合元素.本教程使用父字段集中的collection元素中的ObjectManager对象,我需要弄清楚如何使用工厂添加集合.
namespace Application\Form;
use Application\Entity\Tag;
use Doctrine\Common\Persistence\ObjectManager;
use DoctrineModule\Stdlib\Hydrator\DoctrineObject as DoctrineHydrator;
use Zend\Form\Fieldset;
use Zend\InputFilter\InputFilterProviderInterface;
class TagFieldset extends Fieldset implements InputFilterProviderInterface
{
public function __construct(ObjectManager $objectManager)
{
parent::__construct('tag');
$this->setHydrator(new DoctrineHydrator($objectManager))
->setObject(new Tag());
$this->add(array(
'type' => 'Zend\Form\Element\Hidden',
'name' => 'id'
));
$this->add(array(
'type' => 'Zend\Form\Element\Text',
'name' => 'name',
'options' => array(
'label' => 'Tag'
)
));
}
public function getInputFilterSpecification()
{
return array(
'id' => array(
'required' => false
),
'name' …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种按需生成新RBAC角色的方法.我正在开发一个有两个主要参数的RBAC系统.而不是简单地让用户与角色相关联,而是与一组权限相关联的角色; 用户可以与"针对特定项目"的角色相关联,然后用户可以仅为该项目拥有该角色的权限(或者用户拥有该角色的其他项目).用户可以在一个项目上具有特定角色,在另一个项目上具有不同角色; 授予角色的权限对于每个项目都是一致的; 用户对项目的权限取决于用户对项目的作用.
为了响应具有两个参数的RBAC系统,lmontrieux建议对不同的项目使用不同的角色.例如,如果在项目"P1"和"P2"中使用角色"admin",则创建角色"P1:admin"和另一个角色"P2:admin".这似乎是要走的路,但我不想创建一组静态角色.首先,将有几个项目,除了项目ID之外,我不应该编写几组相同的权限.其次,更重要的是,项目"P3","P4"和"P5"尚不存在,当它们确实存在时,它们将由用户创建.由于我无法为不可预测的未来项目创建基于静态角色的权限,因此我需要开发一种基于通用标准生成项目特定角色的方法.
我认为这是一个很好的应用程序,使用对象和类,但我不知道如何构建它.
是否有类似于array_column多维数组的函数?是否有一个函数可以将下面的第一个数组转换为第二个数组:
Array
(
[0] => Array
(
[foodType] => fruits
[itemID] => 1
[itemName] => apple
)
[1] => Array
(
[foodType] => fruits
[itemID] => 2
[itemName] => banana
)
[2] => Array
(
[foodType] => veggies
[itemID] => 3
[itemName] => carrot
)
[3] => Array
(
[foodType] => veggies
[itemID] => 4
[itemName] => broccoli
)
)
Run Code Online (Sandbox Code Playgroud)
结果数组:
Array
(
[fruits] => Array
(
[0] => Array
(
[itemID] => 1
[itemName] => apple
) …Run Code Online (Sandbox Code Playgroud) 如何减少bootstrap timepicker的大小?
我在我的项目中使用了bootstrap timepicker,但默认大小太大了.我想删除额外的填充和边距.我无法在检查元素或fire-bug中看到它的css,因为小部件在失去焦点时消失了.
我想创建一个自定义视图助手重用一套标准的网页链接在几个视图脚本,并且我有麻烦从路由获取的URL.如果ZF2 url帮助程序url($name, $urlParams, $routeOptions, $reuseMatchedParams在视图脚本本身中编码,则它会从路径参数生成URL.但是,如果我将相同的代码放在我的自定义帮助器中,我会得到以下消息:
Call to undefined method myCustomHelperPath::url()
Run Code Online (Sandbox Code Playgroud)
我知道有一些控制器插件可以从路由中获取URL,但我试图在视图助手中获取URL,而不是控制器.在我的例子中,我想在我的自定义视图助手中使用ZF2视图助手.
在我正在开发的表单中,如果按下名为"reset"的提交按钮,我想放弃更改并重定向到相同的路由.以下代码用于确定当前URL和自重定向:
$hereandnow = $this->getRequest()->getRequestUri();
return $this->redirect()->toUrl($hereandnow);
Run Code Online (Sandbox Code Playgroud)
我想使用route方法做同样的事情:
return $this->redirect()->toRoute($current_route, $current_params);
// OR
return $this->redirect()->toRoute($current_route_including_params);
Run Code Online (Sandbox Code Playgroud)
但是,这需要确定当前路线和参数.我怎样才能做到这一点?
我希望能够动态查找常量的值,但使用变量不适用于语法。
<?php
class Food {
const FRUITS = 'apple, banana, orange';
const VEGETABLES = 'spinach, carrot, celery';
}
$type = 'FRUITS';
echo Food::FRUITS;
echo Food::$type;
?>
Run Code Online (Sandbox Code Playgroud)
给出
apple, banana, orange
Fatal error: Access to undeclared static property: Food::$type
Run Code Online (Sandbox Code Playgroud)
如何动态调用常量?
我有两个与关系连接的实体(AdminMembers\Entity\Members和AdminEvents\Entity\Invitees)OneToMany.因为关系是在实体中定义的,所以我可以使用以下DQL语句来查询数据:
$dql = "SELECT i FROM AdminEvents\Entity\Invitees i WHERE i.eventID=$eventID";
Run Code Online (Sandbox Code Playgroud)
并且,通过这种配置,我可以使用像$invitee->getMember()->getMemberLastName()我的ZF2视图脚本中的语句来从连接的实体中获取数据.
现在,如果我想按字段对DQL语句中的数据进行排序AdminMembers\Entity\Members,我遇到了问题.以下声明
$dql = "SELECT i FROM AdminEvents\Entity\Invitees i WHERE i.eventID=$eventID ORDER BY i.memberLastName, i.memberFirstName";
Run Code Online (Sandbox Code Playgroud)
抛出错误消息
Class AdminEvents\Entity\Invitees has no field or association named memberLastName
Run Code Online (Sandbox Code Playgroud)
这是因为字段memberLastName和memberFirstName定义AdminMembers\Entity\Members.虽然关联确实存在,但我确定我只是缺少引用memberLastName和语法中的一些语法memberFirstName.
我知道我可以扩展DQL语句以加入DQL语句中的实体,这将允许我识别连接表并将元素与表标识符相关联.但是,由于表已经在实体定义中加入,因此不必再次连接它们.
是否有一种特殊的语法用于在DQL语句中引用连接表实体而不"重新加入"语句中的表?