Zend Framework中的单选按钮显示在一列中(每行一个选项).如何从标记中删除br标记,以便所有无线电选项都保留在一行中?
我的装饰者是:
private $radioDecorators = array(
'Label',
'ViewHelper',
array(array('data' => 'HtmlTag'), array('tag' => 'div', 'class' => 'radio')),
array(array('row' => 'HtmlTag'), array('tag' => 'li')),
);
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PHP和Zend Framework构建一个Connect应用程序.我还有一个基于Zend_Auth的用户身份验证系统.现在,我可以使用Facebook登录但注销不起作用.
我需要清除Zend_Auth身份以及删除所有Facebook登录信息.最好的方法是什么?
我facebook_client->expire_session()和他们facebook_client->clear_cookie_state();一起努力,并且facebook_client->logout($next)在打电话之后Zend_Auth::getInstance()->clearIdentity()
他们似乎都没有工作.
我正在尝试用ZendMail发送一封电子邮件(这个简单的脚本总结了它)
<?php
require_once 'Zend/Mail.php';
$mail = new Zend_Mail();
$mail->setBodyText('My Nice Test Text');
$mail->setBodyHtml('My Nice Test Text');
$mail->setFrom('test@example.com', 'Mr Example');
$mail->addTo('contact@mypage.com', 'Mr Test');
$mail->setSubject('TestSubject');
$mail->send();
?>
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个堆栈跟踪:
Fatal error:
Uncaught exception 'Zend_Mail_Transport_Exception' with message 'Unable to send mail. ' in /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Sendmail.php:137
Stack trace:
#0 /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Sendmail->_sendMail()
#1 /usr/share/php/libzend-framework-php/Zend/Mail.php(1178): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))
#2 /var/www/hexreaction/mail/index2.php(11): Zend_Mail->send()
#3 {main} thrown in /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Sendmail.php on line 137
Run Code Online (Sandbox Code Playgroud)
编辑:
我不是试图使用SMTP发送我的电子邮件而且我的问题不那么可怕,但仍然存在问题.
<?php
require_once 'Zend/Mail.php';
$config = array('auth' => 'login',
'username' => 'contact@mypage.com',
'password' => 'secretpass');
$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); …Run Code Online (Sandbox Code Playgroud) 目前我正在尝试学习Zend Framework,因此我买了"Zend Framework in Action"这本书.
在第3章中,介绍了基本模型和控制器以及它们的单元测试.基本控制器如下所示:
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$this->view->title = 'Welcome';
$placesFinder = new Places();
$this->view->places = $placesFinder->fetchLatest();
}
}
Run Code Online (Sandbox Code Playgroud)
Places是从数据库中获取最新位置的模型类.什么错误我在这里:我应该如何测试IndexController在隔离?由于对Places类的引用是"硬编码",我无法注入任何存根或模拟IndexController.
我宁愿拥有的是这样的:
class IndexController extends Zend_Controller_Action
{
private $placesFinder;
// Here I can inject anything: mock, stub, the real instance
public function setPlacesFinder($places)
{
$this->placesFinder = $places;
}
public function indexAction()
{
$this->view->title = 'Welcome';
$this->view->places = $this->placesFinder->fetchLatest();
}
}
Run Code Online (Sandbox Code Playgroud)
我发布的第一个代码示例绝对不是单元测试友好的,因为IndexController不能单独测试.第二个好多了.现在我只需要一些方法将模型实例注入控制器对象.
我知道Zend …
有人可以指导我典型的ACL实现示例.就像'admin'可以访问'admin'模块一样,'user'可以访问'user module',而guest可以访问'open'页面.
使用Zend Framework,有没有办法使用quoteInto方法将多个条件传递给更新语句?我发现了一些对这个问题的引用,但我正在寻找一种支持的方式,而不必扩展Zend_Db或没有连接.
$db = $this->getAdapter();
$data = array('profile_value' => $form['profile_value']);
$where = $db->quoteInto('user_id = ?', $form['id'])
. $db->quoteInto(' AND profile_key = ?', $key);
$this->update($data, $where);
Run Code Online (Sandbox Code Playgroud)
参考
我刚刚与我的队友讨论过用户上传图片在图库中的位置.我希望对我们建议的方法有更广泛的了解.
我的队友写了一个控制器+动作,它调用file_get_contents放在一个文件夹中的图像文件,该文件夹不能用于公共浏览(即public_html服务器外部),并通过标题回显它.这是安全的,但由于我们使用Zend Framework,它也会慢速爬行 - 由于执行引导程序的查询,每次调用图像控制器都会花费大约500ms的延迟.这很烦人,因为图片库视图同时显示超过20个图像.
简而言之,相关代码将是:
class ImageController extends Zend_Controller_Action {
public function showAction () {
$filename = addslashes($this->_getParam('filename'));
if(!is_file($filename)) {
$filename = APPLICATION_PATH.'/../public/img/nopicture.jpg';
}
$this->_helper->viewRenderer->setNoRender(true);
$this->view->layout()->disableLayout();
$img = file_get_contents($filename);
header('Content-Type: image/jpeg');
$modified = new Zend_Date(filemtime($filename));
$this->getResponse()
->setHeader('Last-Modified',$modified->toString(Zend_Date::RFC_1123))
->setHeader('Content-Type', 'image/jpeg')
->setHeader('Expires', '', true)
->setHeader('Cache-Control', 'public', true)
->setHeader('Cache-Control', 'max-age=3800')
->setHeader('Pragma', '', true);
echo $img;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在视图中,我们只需调用:
<img src="<?php echo $this->url(array('controller' => 'image', 'action' => 'show', 'filename' => PATH_TO_HIDDEN_LOCATION.'/filename.jpg')); ?>" />
Run Code Online (Sandbox Code Playgroud)
我有一个不同的方法:我更喜欢将原始图像保存在隐藏位置,但是一旦请求它们,将它们复制到公共位置并提供它的链接(使用额外的机制,由cron运行,擦除公共图像目录时不时地为了不浪费空间,并robots.txt告诉谷歌不要索引目录).该解决方案将文件(每个给定时刻的一些文件)放在一个可公开访问的目录中(如果知道文件名),但也只需要一个视图助手,因此不启动引导程序:
class Zend_View_Helper_ShowImage extends …Run Code Online (Sandbox Code Playgroud) Facebook,myspace,MSN,craigslist; 所有检测时区并正确显示时间和日期,而无需提交表单或重新加载页面.
他们是如何做到的呢?我有一个非常大的网站,并有人发布需要显示正确时间的文章(根据时区上传下午3点或下午6点).
预加载?JavaScript的?加载页面并重新加载?我的网站目前有人进入该网站,并在第一次进入时通过javascript重新加载页面,其中包含其时区的更新信息.然而,这是一个非常讨厌的事情,我正在寻找另一种选择.我知道在加载时我可以发出一个ajax请求然后让它更新整个站点中的所有内容,并为用户提供正确的时区但是如果我必须单击返回,或者重新加载它询问我是否要再次发送信息这也很糟糕.那他们怎么做呢?
我正在玩Facebook,改变我在本地机器上的位置,它似乎每5分钟左右更新一次.
我是基于php,zend-framework的.
我知道使用ZF1,您将使用自定义View Helpers检索模块/控制器名称,这将获得单例frontController对象并获取其名称.
使用ZF2,因为他们已经废除了很多框架的单独性质,并引入了DI,我为这个模块中的所有控制器指定了别名...我可以想象我会通过访问DI或者注入当前名称进入布局.
任何人都知道你会怎么做.我想有一百种不同的方法,但在嗅了几个小时的代码后,我无法弄清楚它现在应该如何完成.
我想要控制器名称的原因是将它作为特定控制器样式的类添加到主体.
谢谢,Dom
我从zend框架站点获取表单并将其放在jquery mobile编写的函数中的新文件中,但是我收到此错误:
未捕获的异常:在初始化之前无法调用selectmenu上的方法; 试图调用方法'刷新'.
此文件的功能代码:
function addItem(id) {
$.ajax({
url:'http://zf.darina.php.nixsolutions.com/order/index/create-order-mobile',
dataType:"jsonp",
data:{id_good:id},
success:function (resp) {
console.log(resp);
$('.product-table').empty();
$('.product-table').append(resp.prod);
$('.product-table').append(resp.form);
$('.add-order-btn').button();
$('.mob-size').selectmenu('refresh', true);
$('#block').page();
}
})
}
Run Code Online (Sandbox Code Playgroud) zend-framework ×10
php ×7
javascript ×2
acl ×1
facebook ×1
frameworks ×1
image ×1
radio-button ×1
security ×1
select-menu ×1
timezone ×1
zend-acl ×1
zend-db ×1
zend-form ×1
zend-mail ×1