标签: zend-framework-modules

Zend Framework 2中的OAuth

我目前正在开发基于新版本2.0.2的第一个ZF应用程序.(我对ZF1没有任何经验)

现在我需要使用OAuth进行身份验证,我想知道是否已经有ZF2的实现.我知道有一个ZF1模块.

如果没有,你会推荐什么?使用PHP的原生OAuth支持?

谢谢你的帮助!罗伯托

php zend-framework-modules zend-framework2

9
推荐指数
1
解决办法
7737
查看次数

代码在模块ZF2中的每个操作之前运行?

我想在我的模块中的每个操作之前编写一些代码来运行.我试过挂钩,onBootstrap()但代码也运行在其他模块上.

对我有什么建议吗?

zend-framework-modules zend-framework2

5
推荐指数
1
解决办法
3999
查看次数

ZF2注册了无效的工厂

我在ZF2应用程序中拥有以下类和模块配置,并且出现以下错误:

While attempting to create applicationformuserform(alias: Application\Form
\UserForm) an invalid factory was registered for this instance type.
Run Code Online (Sandbox Code Playgroud)

UserFormFactory.php

<?php

namespace Application\Factory\Form;

use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use Application\Form\UserForm;

class UserFormFactory implements FactoryInterface {

    public function createService(ServiceLocatorInterface $serviceLocator) {
        $services         = $serviceLocator->getServiceLocator();
        $entityManager    = $services->get('Doctrine\ORM\EntityManager');

        $form = new UserForm($entityManager);

        return $form;
    }
}

?>
Run Code Online (Sandbox Code Playgroud)

UserForm.php

<?php

namespace Application\Form;

use Zend\Form\Form;
use Zend\InputFilter\InputFilterProviderInterface;
use Doctrine\ORM\EntityManager;

class UserForm extends Form implements InputFilterProviderInterface {

    protected $entityManager;

    public function __construct(EntityManager $entityManager) {
        parent::__construct();
        $this->entityManager = $entityManager; …
Run Code Online (Sandbox Code Playgroud)

zend-framework-modules zend-framework2 zend-form2

5
推荐指数
2
解决办法
5028
查看次数

默认模块中控制器的命名空间/前缀

在我的zf应用程序中,我有3个模块:

  • 申请人
  • 公司
  • 管理

而且,在我的application.ini中,我选择了一个默认模块

resources.frontController.defaultModule = "applicant"
Run Code Online (Sandbox Code Playgroud)

因此,一些控制器类的命名如下:

class IndexController extends Zend_Controller_Action /* in Applicant Module */
class Company_IndexController extends Zend_Controller_Action
class Admin_IndexController extends Zend_Controller_Action
Run Code Online (Sandbox Code Playgroud)

由于申请人是我的默认模块,因此我不需要在课程名称中使用模块名称作为前缀.

如何使用前缀方式在默认模块中命名类?

我想使用这些类名

class Applicant_IndexController extends Zend_Controller_Action
class Company_IndexController extends Zend_Controller_Action
class Admin_IndexController extends Zend_Controller_Action
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in ZendFramework-1.11.6/library/Zend/Controller/Dispatcher/Standard.php on line 248
Run Code Online (Sandbox Code Playgroud)

zend-framework zend-framework-modules

4
推荐指数
1
解决办法
2577
查看次数

更改Zend Framework默认模块

我正在研究一个项目,并有以下项目布局:

|Project
    |-Application
        |-api
        |-configs
        |-controllers
        |-models
        |-modules
            |-core
                |-controllers
                |-models
                |-views
                |-Bootstrap.php
            |-site1
            |-site2
            |-site3
        |-views
        |-Bootstrap.php
    |-Docs
    |-Library
    |-Public
    |-.zfproject.xml
Run Code Online (Sandbox Code Playgroud)

我在我的application.ini中使用过这个来尝试将default模块设置为core模块:

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

resources.frontController.defaultModule = "core"
resources.frontController.defaultControllerName = "Index"
resources.frontController.defaultAction = "index"

resources.modules[] = ""
Run Code Online (Sandbox Code Playgroud)

我的问题是,由于某种原因,我不能让bootstraps在模块中工作.这几乎就像默认模块没有被改变一样.应用程序的行为就像它一样,直到我尝试加载bootstraps - 我收到此错误:

致命错误:未捕获的异常'Zend_Application_Resource_Exception',消息'找到模块的Bootstrap文件'默认为"但是引导类"在第85行的M:\ Zend_Framework\library\Zend\Application\Resource\Modules.php中找不到"Default_Bootstrap"

以此错误为前缀:

Zend_Application_Resource_Exception:为模块"default"找到Bootstrap文件,但在第85行的M:\ Zend_Framework\library\Zend\Application\Resource\Modules.php中找不到引导类"Default_Bootstrap"

谁能看到我哪里出错了?

我的Application/Bootstrap.php文件:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}
Run Code Online (Sandbox Code Playgroud)

我的Application/Core/Bootstrap.php文件:

class Core_Bootstrap extends Zend_Application_Module_Bootstrap 
{   
}
Run Code Online (Sandbox Code Playgroud)

zend-framework zend-framework-modules

4
推荐指数
1
解决办法
5247
查看次数

Zend可重用的小部件/插件/ miniapplications?

我是zend框架的新手,并试图获得有关代码重用性的一些见解.我肯定知道模块,但似乎有一些不确定性,什么功能应该进入模块,什么不是.

我想要完成的事情:

1)拥有可重复使用的迷你程序/小部件/插件(无论你怎么称呼它们),只需插入任何网站即可在布局或视图中执行此操作:

<?php echo $this->contactform;?>
Run Code Online (Sandbox Code Playgroud)

或者在视图中:

<?php echo $this->layout()->blog;?>
Run Code Online (Sandbox Code Playgroud)

我叫他们扩展.所以基本上你在joomla/wordpress/concrete5模板中看到了什么.

2)与该特定扩展相关的所有代码都应位于其单独的目录中.

3)我们应该只能为需要它们的某些模块/控制器输出扩展名.如果不显示它们,就不应该被不必要地渲染.

4)每个扩展可以在页面上输出多个内容区域.

如果您使用的结构/方法布局合理,请发布回复.

谢谢:)

zend-framework zend-framework-modules

3
推荐指数
1
解决办法
1126
查看次数

不同控制器的不同布局文件

如何让我的ZF2模块加载特定控制器的其他布局文件?

想想你IndexControllerAdminController你的ZF2应用模块中和IndexController是使用layout.phtml但要使用adminlayout.phtmlAdminController.

这怎么可能?

php zend-framework zend-framework-modules zend-framework2

3
推荐指数
1
解决办法
2462
查看次数

ZF2,使用ZFCUser - >使用服务管理器

我将ZfcUser设置为身份验证模块.该模块运行良好,除了我必须在每个操作中再次定义它:

$sm = $this->getServiceLocator();
$auth = $sm->get('zfcuser_auth_service');
if ($auth->hasIdentity()) {
    fb($auth->getIdentity()->getEmail());
}
else return $this->redirect()->toRoute('zfcuser');
Run Code Online (Sandbox Code Playgroud)

我尝试将代码放入构造中,但这并没有成功.然后我检查了服务管理器,但无法正确定义所有出现的多个版本.

这是我的Module类的代码:

public function getServiceConfig() {
    return array(
        'factories' => array(
            'Todo\Model\TodoTable' =>  function($sm) {
                $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                $table = new TodoTable($dbAdapter);
                return $table;
            },
        ),
    );
}
Run Code Online (Sandbox Code Playgroud)

如何正确设置服务?

zend-framework-modules zend-framework2

3
推荐指数
1
解决办法
3269
查看次数

Zend Framework 2 - 符合缓存的服务工厂

zend文件application.config.php提供了一些缓存配置的方法,我发现它非常适合生产系统:

return array(
        'modules' => array(
                'Application',
        ),
        'module_listener_options' => array(
                'module_paths' => array(
                        './module',
                        './vendor'
                ),
                'config_glob_paths' => array('config/autoload/{,*.}{global,local}.php'),
                'config_cache_enabled' => true,
                'config_cache_key' => md5('config'),
                'module_map_cache_enabled' => true,
                'module_map_cache_key' => md5('module_map'),
                'cache_dir' => './data/cache',
        ),
);
Run Code Online (Sandbox Code Playgroud)

但是,激活会立即导致错误

Fatal error: Call to undefined method Closure::__set_state()
Run Code Online (Sandbox Code Playgroud)

这与作为闭包编写的工厂有关,如下所示:

'service_manager' => array(
    'factories' => array(
        'auth.service' => function($sm) {
            /* hic sunt ponies */
        },
    ),
),
Run Code Online (Sandbox Code Playgroud)

不幸的是, 问题 告诉我,为什么这个错误发生,但不知道如何解决它.

我如何重做这个和类似的,factories以便缓存将与他们一起工作?

php zend-framework-modules zend-framework2

3
推荐指数
1
解决办法
1932
查看次数

如何在Zend Framework 2中创建通用模块/控制器/动作路由?

我想在Zend Framework 2中创建一个与ZF2 MVC架构一起使用的通用模块/控制器/动作路由.

在ZF1中,默认路由被定义为/[:module][/:controller][/:action]模块默认为default,控制器默认为index和操作index.

现在,ZF2改变了模块的用途,从简单的控制器和视图组到真正的独立应用程序,并将控制器名称显式映射到控制器类.

由于所有控制器名称在所有模块中必须是唯一的,因此我想将它们命名为,modulename-controllername但我希望URL看起来像/modulename/controllername不需要为每个模块创建特定路由,使用类似于上述ZF1的旧默认路由.

php zend-framework-modules zend-framework2

2
推荐指数
1
解决办法
8851
查看次数