我正在忙于编写数据库会话模块,因此我可以在多个应用程序之间快速安装它.该模块将作为要启动的第一个模块从自动装载器加载.我想要完成的是将默认会话容器/会话处理程序更改为所有模块的默认会话处理程序,它也应该是数据库托管会话.我已经与zf2会话处理程序争论了很长一段时间,并且日志中的错误有意义.所以我到目前为止所拥有的.Module.php的基本模块包含...
命名空间DBSession;
use Zend\Mvc\ModuleRouteListener;
class Module {
public function onBootstrap($e) {
$e->getApplication()->getServiceManager()->get('translator');
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
$config = $e->getApplication()->getServiceManager()->get('Config');
$controller = $e->getTarget();
$controller->config = $config;
new \DBSession\Storage\DBStorage();
}
public function getConfig() {
return include __DIR__ . '/config/module.config.php';
}
public function getAutoloaderConfig() {
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
以及启动数据库会话处理程序的实际类.
namespace DBSession\Storage;
use Zend\Session\SaveHandler\DbTableGateway;
use Zend\Session\SaveHandler\DbTableGatewayOptions; …Run Code Online (Sandbox Code Playgroud) 如何在ZF 2中的控制器中调用basePath助手.我必须重定向到我需要基本路径的特定URL.return $ this-> redirect() - > toUrl($ basePath.'/ application/rent/search');
我想了解为该问题设计的以下代码是如何工作的:“给定一个整数序列,找到一个使其元素总和最大化的连续子序列”
defn max-subseq-sum [coll]
(->> (take-while seq (iterate rest coll)) ; tails (1)
(mapcat #(reductions conj [] %)) ; inits (2)
(apply max-key #(reduce + %)))) ; max sum
Run Code Online (Sandbox Code Playgroud)
所以我想看看表格 (1)、(2) 和其他表格的输出。我可以在 Cursive 中设置断点,但我不知道如何获得这些值。我试图定义一个语言环境变量,例如
(defn max-subseq-sum [coll]
(->> (take-while seq (iterate rest coll)) ; tails
(let [d #(reductions conj [] %)]
d ) ; inits
(apply max-key #(reduce + %)))
)
(max-subseq-sum [-1, -2, 3, 5, 6, -2, -1, 4, -4, 2, -1])
Run Code Online (Sandbox Code Playgroud)
但我仍然不明白如何看到 d,例如
如何解决这个问题呢?
在提交和验证我的Zend Framework 2表单时,我遇到的是奇怪的行为.我已将表格缩减为三个元素以证明我的意思,但问题也存在于其他元素中.
我有两个要素; 电子邮件和性别.我没有InputFilter为我的表单指定一个,所以我的逻辑告诉我我的表单是有效的.但是,当我提交表单并进行验证检查时,电子邮件和性别元素会Value is required and can't be empty出错.但是,我没有明确表示他们是必需的,也不能是空的.
我的电子邮件元素类型Zend\Form\Element\Email,我怀疑它可能与它有关,因为如果我改变它Zend\Form\Element\Text,一切都很好.但是,如果我想要一个不需要的电子邮件字段呢?
接下来,我的性别选择元素给了我同样的错误.我设置了空选项,但我认为这只是用于使用默认值,例如"选择您的性别",但它没有添加必需的约束.看来,如果我删除这个空选项,那么我不会收到此错误.这个错误也很奇怪的是,如果我不选择性别并提交我的表单,那么在回发的下拉列表中会选择不同的选项.在这种情况下,我使用空选项("选择您的性别")提交表单,但是在刷新表单时,所选选项将更改为"女性"."Female"选项的值为0,但是如果我将值更改为3,则可以正常工作.但是,如果我需要在其中一个选项中使用值0,该怎么办?也许它' 由类型转换或其他东西引起的.我真的不知道.
以下是我的代码.我写了一些评论,因此可能更容易理解.
表格类摘录:
// E-mail (generates "Value is required and can't be empty" - but what if the field should be optional? Where is this validator added?
$email = new Element\Email('email'); // If I change to "Element\Text", there are no problems
$email->setLabel('E-mail address');
$email->setLabelAttributes(array(
'for' => $email->getName(),
'class' => 'some class'
));
$email->setAttributes(array(
'id' => $email->getName(),
'placeholder' => …Run Code Online (Sandbox Code Playgroud) 我正在努力将多个左连接实现到 ZF2 中。我已经有第一个工作了,但是当我添加另一个时,它就不起作用了。
这是我应该在 zf2 中实现的工作 SQL 查询:
SELECT
ac.ctr_id AS ctr_id,
ac.ctr_no AS ctr_no,
ac.ctr_marketer AS marketer,
ac.ctr_manager AS manager,
ac.ctr_recruiter AS recruiter,
l1.emp_realname AS marketer,
l2.emp_realname AS co_recruiter_manager,
l3.emp_realname AS recruiter
FROM
allcontracts AS ac
JOIN
lstemployees AS le ON ac.ctr_recruiter = le.emp_id
LEFT JOIN
lstemployees AS l2 ON ac.ctr_manager = l2.emp_id
LEFT JOIN
lstemployees AS l3 ON ac.ctr_recruiter = l3.emp_id
LEFT JOIN
lstemployees AS l1 ON ac.ctr_marketer = l1.emp_id
Run Code Online (Sandbox Code Playgroud)
从我的模型:
.....
$where = new Where();
$this->table='allcontracts';
$select …Run Code Online (Sandbox Code Playgroud) 免责声明:我是Zend的完全菜鸟.
我正在评估Zend Framework 2的工作,并尝试将其配置为使用ZfTwig进行模板化.(见这里:https://github.com/mtymek/ZfTwig)
我完成Step 3了配置确定,但我无法弄明白Step 4.
我尝试将以下内容放入application.config,但没有好处.
我应该把它放在哪里?
return array(
'di' => array(
'instance' => array(
// setup other stuff...
// ...
// setup view script resolvers - very similar to configuration
// from ZendSkeletonApplication
'Zend\View\Resolver\AggregateResolver' => array(
'injections' => array(
'Zend\View\Resolver\TemplateMapResolver',
'ZfTwig\TemplatePathStack',
),
),
'Zend\View\Resolver\TemplateMapResolver' => array(
'parameters' => array(
'map' => array(
'layout/layout' => __DIR__ . '/../view/layout/layout.twig',
),
),
),
'ZfTwig\TemplatePathStack' => array( …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Zend框架2中创建一个SOAP客户端,我创建了下面的正确返回数据
try {
$client = new Zend\Soap\Client("http://www.webservicex.net/country.asmx?WSDL");
$result = $client->GetCountries();
print_r($result);
} catch (SoapFault $s) {
die('ERROR: [' . $s->faultcode . '] ' . $s->faultstring);
} catch (Exception $e) {
die('ERROR: ' . $e->getMessage());
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将数据发送到Web服务时,例如使用
try {
$client = new Zend\Soap\Client("http://www.webservicex.net/country.asmx?WSDL");
$result = $client->GetCurrencyByCountry('Australia');
print_r($result);
} catch (SoapFault $s) {
die('ERROR: [' . $s->faultcode . '] ' . $s->faultstring);
} catch (Exception $e) {
die('ERROR: ' . $e->getMessage());
}
Run Code Online (Sandbox Code Playgroud)
我刚收到以下消息
ERROR: [soap:Receiver] System.Web.Services.Protocols.SoapException: Server was unable to process request. …Run Code Online (Sandbox Code Playgroud) 我正在尝试从route/admin重定向到/ admin/post/list.
我设置了从/ admin到IndexController :: indexAction()的路由
然后我像这样做了控制器
class IndexController extends AbstractActionController
{
public function indexAction()
{
$this->redirect()->toRoute('postList');
}
}
Run Code Online (Sandbox Code Playgroud)
它运行良好,但ZF2需要制作模板index/index.phtml.
如何在没有空模板的情况下更好地重定向?
Zend Framework 2声称具有"随意使用"设计,允许您轻松使用其任何模块而无需承诺完整堆栈.我需要一个好的数据库访问层,从网上的文档和推荐我喜欢Zend\Db的外观.我已将Zend/Db文件夹放在我的/ lib目录中,但是我无法让PHP识别Zend\Db\Adapter\Adapter类.当我尝试使用它时,我不断收到致命错误:
致命错误:第6行/home/username/public_html/test.php中找不到类'Zend\Db\Adapter\Adapter'
我试过在我的.htaccess中设置ZF2_PATH:
SetEnv ZF2_PATH /home/username/public_html/lib/Zend
我已经尝试在我的代码中设置包含路径:
set_include_path( $_SERVER['DOCUMENT_ROOT'] . '/lib' . PATH_SEPARATOR . get_include_path() );
我已经尝试显式加载和实例化Zend\Loader:
require_once 'lib/Zend/Loader/StandardAutoloader.php';
$zendLoader = new Zend\Loader\StandardAutoloader();
$zendLoader->register();
Run Code Online (Sandbox Code Playgroud)
这些都没有任何影响.我试图明确要求的Zend/DB /适配器/ Adapter.php,并没有解决我看到的错误,但我只是得到了同样的错误了它的一个依赖,所以这不是一个可行的解决方案.
我在这做错了什么?ZF2是不是真的设计用于这种模块化使用,还是我错过了什么?
编辑:我通过编写自己的自动加载功能来实现这一点:
function autoloader($class) {
$path = explode('\\', $class);
foreach ($path as $p) {
$cp .= DIRECTORY_SEPARATOR . $p;
}
include __DIR__ . '/lib/' . $cp . '.php';
}
spl_autoload_register(autoloader);
Run Code Online (Sandbox Code Playgroud)
这种有意义 - 很明显,如果我不使用框架的其余部分DB模块,我不能指望框架为我做自动装填 - 除了我仍然不明白为什么手动装载的Zend \装载机没有解决问题.是不是处理自动加载Zend\Loader的问题?无论如何,我现在有一个可行的解决方案,但如果有更好的解决方案,我很乐意听到它.
我试图反转试剂原子的值 changeval
(def changeval(reagent/atom 0))
...
...
[:input {:type "button" :value "Invert!"
:on-click #(swap! changeval(not= changeval0 ) ) }]
Run Code Online (Sandbox Code Playgroud)
什么也没发生,我怎样才能使 changeval = NOT(changeval)