我正在使用Zend Framework 2创建一个应用程序,我真正喜欢的一个功能是能够根据环境设置PHP设置(主要是在devel环境中启用错误显示).据我所知,在我的有限研究中,这个功能还没有(或不会)存在,你必须为它创建一个自定义解决方案.
我错了还是这是ZF 2.0.2的唯一解决方案?
我正在使用ZF2开发应用程序.在我的应用程序中,我必须在数据库中插入许多行(大约900).
我有一个表模型,所以我首先尝试:
$table->insert(array('x' => $x, 'y' => $y));
Run Code Online (Sandbox Code Playgroud)
在我的循环中.这在技术上是有效的,但这是如此之慢,以至于我很难在php超时之前插入一半的数据(我无法更改超时).
然后,我决定使用准备好的声明.所以我已经在循环之外准备好了,然后在我的循环中执行它...它甚至更慢.
所以,我决定停止使用ZF2工具,因为它们似乎太慢而无法在我的情况下使用,我已经创建了自己的请求.我正在使用mysql,所以我可以用我的所有值做一个请求.但我无法在任何界面中找到任何方法来逃避我的价值观......
有没有办法做到这一点?
谢谢你的帮助,抱歉我的英语不好.
我试图在ZF2中完成一些基本的路由,但我遇到了一些问题.
给我带来麻烦的部分是这样的:
'parent-categories' => array(
'type' => 'literal',
'options' => array(
'route' => '/kategorier/',
'defaults' => array(
'controller' => 'categories',
'action' => 'parent-categories',
),
),
'may_terminate' => true,
'child_routes' => array(
'child-categories' => array(
'type' => 'segment',
'options' => array(
'route' => '/kategorier[/:slug][/:parentCategoryid]/',
'constraints' => array(
'parentCategoryid' => '[0-9]+',
),
'defaults' => array(
'controller' => 'categories',
'action' => 'child-categories',
)
),
),
),
),
Run Code Online (Sandbox Code Playgroud)
最初的"父类别"路线工作正常,没问题.但问题是,子类别路线没有做任何事情.我有网址:
/ kategorier /试验试验试验试验试验/ 1 /
但这绝不匹配.我收到错误:
路由无法匹配请求的URL.
如果我将子类别路由从"child_routes"部分中取出,它总是捕获请求,即使该URL仅为/ kategorier /.谁能看到我在这里做错了什么?
这是我的表格
<?php
namespace Home\Form;
use Zend\Form\Form;
class CheckPriceForm extends Form
{
public function __construct($name = null)
{
parent::__construct();
$this->add(array(
'name' => 'distance',
'type' => 'Zend\Form\Element\Number',
'options' => array(
'label' => 'Distance',
),
));
$this->add(array(
'name' => 'weight',
'type' => 'Zend\Form\Element\Number',
'options' => array(
'label' => 'Weight',
),
));
$this->add(array(
'name' => 'submit',
'type' => 'Submit',
'attributes' => array(
'value' => 'Check Price',
),
));
}
}
Run Code Online (Sandbox Code Playgroud)
给出以下错误
/home/dinuka/workspace/free_courier/vendor/ZF2/library/Zend/I18n/Validator/Float.php:49
Zend\I18n\Validator component requires the intl PHP extension
Run Code Online (Sandbox Code Playgroud)
当我替换电子邮件号码时,它正在工作.请帮我.
我开始学习Zend Framework 2,并对这个框架的模块化系统非常感兴趣.
我想基于zf2创建自己的cms,但我遇到了zf2中关于模块协作的问题,让我们用一个例子清楚我的目的:
我使用zfcuser模块进行用户登录和注册,现在我想在这个模块上创建一个UserManagement模块来管理用户.
我希望在我的UserManagement模块中有一个分页列出用户,但我不知道如何实现这一点,编辑zfcuser模块和添加分页方法是针对软件工程方法而创建我的用户模型和实体是针对模块化系统的!
请帮我克服这个问题.
为什么它不起作用?我怎么称呼存储过程?
$rsm = new \Doctrine\ORM\Query\ResultSetMappingBuilder($this->objectManager);
$query = $this->objectManager->createNativeQuery('call `ftemplate_setcell`(:t, :col, :row, :p, :r, :v)', $rsm)->
setParameters($this->data);
$query->Execute();
$this->objectManager->flush();
Run Code Online (Sandbox Code Playgroud) 我正在将应用程序从ZF1移植到ZF2,作为其中的一部分,我必须重写我们的数据库映射器.
我正在努力解决这个SQL语句:
SELECT full_name, GROUP_CONCAT(value)
FROM (
SELECT full_name, value
FROM my_table
ORDER BY id DESC
) as subtable
GROUP BY full_name
ORDER BY full_name DESC;
Run Code Online (Sandbox Code Playgroud)
我试图解决的根本问题是我需要在运行之前订购子查询的结果,GROUP_CONCAT我需要它适用于MySQL和Sqlite.在MySQL中,我可以简单地指定GROUP_CONCAT函数内的顺序,但这对于Sqlite是不可能的,所以我需要子查询才能兼容MySQL和Sqlite.
在ZF1中,我可以这样做:
$fromSql = $db->select()
->from('my_table', array('full_name', 'value'))
->order('id DESC');
$sql = $db->select()
->from(array(
'subtable' => new Zend_Db_Expr('(' . $fromSql . ')')
), array(
'full_name' => 'full_name',
'value' => new Zend_Db_Expr('GROUP_CONCAT(subtable.value)'),
)
)
->group('full_name')
->order('full_name DESC');
Run Code Online (Sandbox Code Playgroud)
但是,使用ZF2似乎不可能在from子句中使用子查询.有没有解决这个问题?
我想以旧方式在zend2中执行查询.我想编写查询并执行它.我不想使用函数save(),update(),delete().这是我的模特:
namespace Application\Model;
use Zend\Db\Adapter\Adapter;
use Zend\Db\TableGateway\AbstractTableGateway;
use Zend\Db\Sql\Select;
use Zend\Db\Sql\Sql;
use Zend\Db\Adapter\Driver\ResultInterface;
use Zend\Db\ResultSet\ResultSet;
class UsersTable extends AbstractTableGateway {
public function __construct(Adapter $adapter) {
$this->adapter = $adapter;
}
public function fetchAll() {
$results = $this->adapter->query("SELECT * FROM users");
return $results->execute();
}
}
Run Code Online (Sandbox Code Playgroud)
在fetchAll函数中,我想执行查询"select*from users".我怎样才能做到这一点 ?结果是:
object(Zend\Db\Adapter\Driver\Pdo\Result)#243 (8) {
["statementMode":protected]=>
string(7) "forward"
["resource":protected]=>
object(PDOStatement)#241 (1) {
["queryString"]=>
string(19) "SELECT * FROM users"
}
["options":protected]=>
NULL
["currentComplete":protected]=>
bool(false)
["currentData":protected]=>
NULL
["position":protected]=>
int(-1)
["generatedValue":protected]=>
string(1) "0"
["rowCount":protected]=>
NULL
}
Run Code Online (Sandbox Code Playgroud) 我正在使用字段集来填充ZF2中的表单.如果postm为空字段,则该字段在db中也为空.如何在db中为空字段强制Null?
在Zend 2和zend 3中,我遇到了这个问题。以下代码生成未找到的“ YourModule \ Controller \ ClassName”,因为我没有导入ClassName。
<?php
public function indexAction() {
$x = new ClassName() ; //I've not imported ClassName, which raise the error.
}
Run Code Online (Sandbox Code Playgroud)
当发生某种类型的异常时,控件将转到onDistpach(DispatchListner)中的catch部分。如果我在此catch块中回显$ ex-> getMessage(),它将打印正确的错误消息,例如:“ YourModule \ Controller \ ClassName”未找到。
public function onDispatch(MvcEvent $e)
{
....
} catch (\Throwable $ex) {
$caughtException = $ex; //HERE
//$ex->getMessage() ;
}
Run Code Online (Sandbox Code Playgroud)
但是zend呈现的最终输出如下。没有有关发生异常的信息。
发生错误执行期间发生错误。
请稍后再试。
没有例外
在其他大多数情况下,它会打印正确的stacktrace。我如何配置zend以显示这些错误消息,而无需在Zend-Mvc中编辑DispatchListner?
编辑: 我尝试在异常之前打开error_reporting()和display_errors。还尝试尝试捕获产生异常但仍然无法正常工作的代码。还有我的module.config。
'view_manager' => array(
'display_not_found_reason' => true,
'display_exceptions' => true,
...
Run Code Online (Sandbox Code Playgroud) zend-framework2 ×10
php ×3
mysql ×2
doctrine-orm ×1
element ×1
html5 ×1
modularity ×1
quote ×1
sql ×1
sqlite ×1
zend-db ×1
zend-form ×1
zfcuser ×1