重新安装我的wamp环境后,打开app_dev.php后,屏幕上会显示此错误消息:
致命错误:无法在第532行的C:...\app\cache\dev\classes.php中重新声明类SessionHandlerInterface
有没有人知道出了什么问题?
几天以来,我一直在努力研究如何在Go REST API中继续使用PATCH请求,直到我找到一篇关于使用指针和omitempty
标记的文章,我已经填充并且工作正常.很好,直到我意识到我仍然需要构建一个UPDATE
SQL查询.
我struct
看起来像这样:
type Resource struct {
Name *string `json:"name,omitempty" sql:"resource_id"`
Description *string `json:"description,omitempty" sql:"description"`
}
Run Code Online (Sandbox Code Playgroud)
我期待一个PATCH /resources/{resource-id}
包含这样一个请求体的请求:
{"description":"Some new description"}
Run Code Online (Sandbox Code Playgroud)
在我的处理程序中,我将以Resource
这种方式构建对象(忽略导入,忽略错误处理):
var resource Resource
resourceID, _ := mux.Vars(r)["resource-id"]
d := json.NewDecoder(r.Body)
d.Decode(&resource)
// at this point our resource object should only contain
// the Description field with the value from JSON in request body
Run Code Online (Sandbox Code Playgroud)
现在,对于正常UPDATE
(PUT
请求)我会这样做(简化):
stmt, _ := db.Prepare(`UPDATE resources …
Run Code Online (Sandbox Code Playgroud) 我正在使用LDAP Active Directory并尝试列出所有用户.我有这个完美的过滤器:
(&(objectclass=user)(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))
Run Code Online (Sandbox Code Playgroud)
不幸的是,我们还有AD中的计算机单元和其他设备与对象类"用户",所以使用以前的过滤器,我得到了所有用户,计算机,设备,房间等.
这些计算机和设备还有一个对象类"计算机",因此我需要使用objectclass!="computer"扩展过滤器,以便仅列出真实用户.到目前为止,我尝试过这些过滤器,它们都没有工作(没有数据返回!):
(&(objectclass=user)(!objectclass=computer)(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))
(&(objectclass=user)(!(objectclass=computer))(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))
(!(objectclass=computer))(&(objectclass=user)(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))
(!objectclass=computer)(&(objectclass=user)(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))
Run Code Online (Sandbox Code Playgroud)
(真实用户没有对象类"计算机").
我正在使用PHP ldap实现,所以使用ldap_search()
方法.
"不等于"语法在此处找到:http://technet.microsoft.com/en-us/library/aa996205%28EXCHG.65%29.aspx或此处:http://msdn.microsoft.com/ EN-US /库/ aa746475%28V = vs.85%29.aspx
也许我可以尝试过滤DN中的用户(!CN = Computers),但首先我想过滤(!objectclass = computer),因为它对我来说更合乎逻辑.
objectclass!="computer"表达式的正确语法是什么?
在我们的Intranet应用程序中,我们使用SSO(单点登录)登录,而客户端和auth源应用程序上的会话都存储在memcached中.
会话设置为在垃圾收集器可能将其视为删除之前的12小时.两个应用程序都是使用ZF2编写的.
不幸的是,问题是,在一段时间后(我没有确切的值),浏览器会丢失导致重定向到auth origin的会话,其中会话仍处于活动状态,因此用户被重定向回客户端并且浏览器会话刷新.如果用户没有未保存的工作,这不是什么大问题,因为这两个重定向在1秒内发生,用户甚至可能没有注意到它们.
但是当用户有未保存的工作时,它确实是一个大问题,即使尝试保存它也会导致重定向,工作也就消失了.
以下是会话的配置Bootstrap.php
:
class Module
{
public function onBootstrap(MvcEvent $e)
{
// ...
$serviceManager = $e->getApplication()->getServiceManager();
$sessionManager = $serviceManager->get('session_manager_memcached');
$sessionManager->start();
Container::setDefaultManager($sessionManager);
// ...
}
public function getServiceConfig()
{
return array(
'factories' => array(
// ...
'session_manager_memcached' => function ($sm) {
$systemConfig = $sm->get('config');
$config = new SessionConfig;
$config->setOptions(array(
'phpSaveHandler' => 'memcache',
'savePath' => 'tcp://localhost:11211?timeout=1&retry_interval=15&persistent=1',
'cookie_httponly' => true,
'use_only_cookies' => true,
'cookie_lifetime' => 0,
'gc_maxlifetime' => 43200, // 12h
'remember_me_seconds' => 43200 // 12h
));
return …
Run Code Online (Sandbox Code Playgroud) 我对Doctrine模型hydrate()
方法有一点问题.我使用这种方法从给定的数组中水合一个conrete模型的对象,如下所示:
$model = new Doctrine\Model\Model;
$model->hydrate($model_array);
Run Code Online (Sandbox Code Playgroud)
使用嵌套的子模型对简单物体进行保湿时,一切都很完美.现在问题是我需要使用嵌套对象来水合(使用此方法)一个对象(其中一些对象也有嵌套对象).
如果我使用HYDRATE_RECORD
它会很好但查询中的所有记录都将作为对象返回,这意味着更多的内存消耗.因此,我正在使用HYDRATE_ARRAY
并按需将水泥混凝土阵列水合成物体.
假设我有一个模型A,它有嵌套模型AB,AC(一对多),AD和AC有另一个嵌套模型ACE.在print_r
A数组之后我们可以看到这个结构:
A Array (
...
ab Array ( ... )
ac Array (
AC Array (
...
ace Array ( ... )
)
AC Array (
...
ace Array ( ... )
)
...
)
ad Array ( ... )
)
Run Code Online (Sandbox Code Playgroud)
通常在使用水合物后,我会认为这将是我的目标:
A Object {
...
ab Object { ... }
ac Array (
AC Object {
...
ace Object { ... }
} …
Run Code Online (Sandbox Code Playgroud) 我的opencart中有一个脚本,由我自己制作,并希望让它发送一封电子邮件,但我认为当我尝试获取电子邮件参数时,它们会返回null
.
这是我的代码:
$email_to = "somewhere@example.com";
$config = new Config();
$mail = new Mail();
$mail->protocol = $config->get('config_mail_protocol');
$mail->parameter = $config->get('config_mail_parameter');
$mail->hostname = $config->get('config_smtp_host');
$mail->username = $config->get('config_smtp_username');
$mail->password = $config->get('config_smtp_password');
$mail->port = $config->get('config_smtp_port');
$mail->timeout = $config->get('config_smtp_timeout');
$mail->setTo($email_to);
$mail->setFrom("nuno@[mydomain].com");
$mail->setSender("nuno@[mydomain].com");
$mail->setSubject("test send mail");
$mail->setText("test message body text");
$mail->send();
Run Code Online (Sandbox Code Playgroud)
当我尝试呼叫时:echo $config->get('config_mail_protocol');
它返回null
.
我试图在插件类中获取服务定位器/实体管理器,我该怎么做到.
在我的控制器中,我得到这样的.
public function getEntityManager()
{
if(null === $this->em){
$this->em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default');
}
return $this->em;
}
public function setEntityManager(EntityManager $em)
{
$this->em = $em;
}
Run Code Online (Sandbox Code Playgroud)
但是在插件类中,我在$ this-> getServiceLocator()行上遇到错误.因为这在插件类中不可用.
我怎样才能这样做,以便我可以获取一些记录并在插件中插入少量数据库.
我的插件类中有MvcEvent $ e对象,我可以利用它来获取实体管理器吗?
我用这个插件来创建我的插件
任何指南都会受到关注.
更新:
namespace Auth\Controller\Plugin;
use Zend\Mvc\Controller\Plugin\AbstractPlugin;
use Zend\EventManager\EventInterface as Event;
use Zend\Authentication\AuthenticationService;
use Doctrine\ORM\EntityManager;
use Auth\Entity\User;
use Zend\Mvc\MvcEvent;
class AclPlugin extends AbstractPlugin
{
/*
* @var Doctrine\ORM\EntityManager
*/
protected $em;
public function checkAcl($e)
{
$auth = new AuthenticationService();
if ($auth->hasIdentity()) {
$storage = $auth->getStorage()->read();
if …
Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的数组:
array(
'name1' => array('city1', 'city2', 'city3'),
'name2' => array('city1', 'city4'),
'namen' => array('city1', 'city7', 'cityn')
);
Run Code Online (Sandbox Code Playgroud)
传递给smarty的是:$my_names
我的Smarty模板中有一个循环,如下所示:
{{foreach from=$names item=name}}
{{foreach from=$cities item=city}}
//Check if name1 exist and after check if the city is in the array for that name
{{/foreach}}
{{/foreach}}
Run Code Online (Sandbox Code Playgroud)
我没有看到如何使用$name
和$city
访问数组$my_names
我试过了if($my_names.$name.$city)
,但它不起作用.
我只有一个PreferenceScreen
包含CheckBoxPreferences
(要选择的类别).我需要一个选项来检查/取消选中所有这些选项.我有以下代码来完成这项工作,但是有一个问题:屏幕上的复选框没有更新 - 我需要在视图上调用一些无效的东西.
这是我现在的代码:
private void checkAll() {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = settings.edit();
@SuppressWarnings("unchecked")
Map<String, Boolean> categories = (Map<String, Boolean>) settings.getAll();
for(String s : categories.keySet()) {
editor.putBoolean(s, true);
}
editor.commit();
}
private void uncheckAll() {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = settings.edit();
@SuppressWarnings("unchecked")
Map<String, Boolean> categories = (Map<String, Boolean>) settings.getAll();
for(String s : categories.keySet()) {
editor.putBoolean(s, false);
}
editor.commit();
this.restart();
}
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常但我需要以某种方式刷新视图以查看结果imediatelly(不仅仅是在关闭并重新启动设置活动之后).
谢谢大家的任何建议!
需要从servlet上下文侦听器的contextInitialized()
方法调用EJB服务.应用程序在JBOSS上运行,虽然上下文监听器工作正常,但我无法通过JNDI查找来访问EJB bean.
因为JBOSS中的Web部署发生在EJB bean与JNDI树绑定之前.如何克服这个?有没有办法尽早配置JNDI绑定,或者在EJB完全部署后再启动Web部署?
我已经把Thread.sleep()
这个contextInitialized()
方法中的服务调用之前放了,它在我的JBoss5.1.0 GA中运行正常,并且在同一版本的其他机器JBoss中同样没有用.
应用程序需要这个,因为我们希望从数据库加载一些主数据并使其在Web层中可用(缓存类型).JBOSS startupmbean适合这个要求吗?如果是,我如何将数据提供给Web层?
如果有其他方法,请建议.