如何在Zend Framework 1.8+应用程序中开始测试我的模型?
假设我已将我的应用程序设置为开始测试.我已经测试了一个控制器,所以我知道它有效.我有我的所有控制器扩展我的ControllerTestCase.php文件:
<?php
require_once 'Zend/Application.php';
require_once 'Zend/Test/PHPUnit/ControllerTestCase.php';
abstract class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
public $application;
public function setUp()
{
$this->application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$this->bootstrap = array($this, 'appBootstrap');
parent::setUp();
}
public function appBootstrap()
{
$this->application->bootstrap();
}
public function tearDown()
{
Zend_Controller_Front::getInstance()->resetInstance();
$this->resetRequest();
$this->resetResponse();
$this->request->setPost(array());
$this->request->setQuery(array());
parent::tearDown();
}
}
Run Code Online (Sandbox Code Playgroud)
但现在我想开始测试我的模型.似乎我ModelTestCase.php不会延伸Zend_Test_PHPUnit_ControllerTestCase而是延伸Zend_Test_PHPUnit_ModelTestCase,但是我知道不存在这样的类.如何开始测试我的Zend Framework模型?
斜杠字符在此查询中的含义是什么?这与MySql数据库一起使用.
SELECT Channel, COUNT(Channel) AS Total, COUNT(Channel) / (SELECT COUNT(*) FROM UserClicks WHERE (Date > '2009-12-1' AND Date < '2010-1-1') AND RoleType='member' ) AS Percent FROM UserClicks WHERE (Date > '2009-12-1' AND Date < '2010-1-1') AND RoleType='member' GROUP BY Channel ORDER BY Total DESC
Run Code Online (Sandbox Code Playgroud)
更新:对不起,愚蠢的问题!= P
我有这个字符串: comment_1234
我想1234从字符串中提取。我怎样才能做到这一点?
更新:我无法得到您的任何答案……我的代码有问题吗?警报永远不会被调用:
var nameValue = dojo.query('#Comments .Comment:last-child > a[name]').attr('name');
alert('name value: ' + nameValue); // comment_1234
var commentId = nameValue.split("_")[1];
// var commentId = nameValue.match(/\d+/)[0];
// var commentId = nameValue.match(/^comment_(\d+)/)[1];
alert('comment id: ' + commentId); //never gets called. Why?
Run Code Online (Sandbox Code Playgroud)
我发现了我的问题......出于某种原因,它看起来像一个字符串,但实际上并不是一个字符串,所以现在我正在转换nameValue为一个字符串并且它正在工作。
var nameValue = dojo.query('#Comments .Comment:last-child > a[name]').attr('name'); //comment_1234
var string = String(nameValue); //cast nameValue as a string
var id = string.match(/^comment_(\d+)/)[1]; //1234
Run Code Online (Sandbox Code Playgroud) 我正在尝试将一些Markdown样式添加到我的Rails 3博客应用程序中.这应该是简单的,但我不能让它工作.
我有kramdown我的Gemfile:
gem 'kramdown'
Run Code Online (Sandbox Code Playgroud)
我跑bundle install.我有一个名为的应用程序助手kramdown
module ApplicationHelper
def kramdown(text)
require 'kramdown'
return Kramdown::Document.new(text).to_html
end
end
Run Code Online (Sandbox Code Playgroud)
在我的视图脚本中:
<%= kramdown(@post.body) %>
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
没有这样的文件加载 - kramdown
我究竟做错了什么?
我有一个iframe加载页面,我想操纵内容.
例如:
<iframe id="myIframe" src="http://www.google.com"></iframe>
<script>
$(document).ready(function(){
$(iframeContents).css('background-color', '#000');
});
</script>
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我对使用 Git 比较陌生。这是我到目前为止所做的:
$ git branch
* master
$ git status
# On branch master
nothing to commit (working directory clean)
$ git branch mywork
$ git checkout mywork
$ git branch
* mywork
master
...modify some files...
$ git status
# On branch mywork
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: file1.html
# modified: file2.html …Run Code Online (Sandbox Code Playgroud) 我有一个Zend Framework控制器editAction().
class WidgetController extends BaseController
{
public function editAction()
{
//code here
}
}
Run Code Online (Sandbox Code Playgroud)
该控制器扩展了一个基本控制器,该控制器在允许用户编辑记录之前检查用户是否已登录.
class BaseController extends Zend_Controller_Action
{
public function init()
{
if ($this->userNotLoggedIn()) {
return $this->_redirect('/auth/login');
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,现在我正在执行AJAX请求,我将返回一个JSON响应,因此重定向将不再起作用.我需要停止进一步的控制器执行,以便我可以立即发送响应:
class BaseController extends Zend_Controller_Action
{
public function init()
{
if ($this->userNotLoggedIn()) {
if ($this->_request->isXmlHttpRequest()) {
$jsonData = Zend_Json::encode(array('error'=>'You are not logged in!'));
$this->getResponse()
->setHttpResponseCode(401)
->setBody($jsonData)
->setHeader('Content-Type', 'text/json');
//now stop controller execution so that the WidgetController does not continue
} else {
return $this->_redirect('/auth/login');
} …Run Code Online (Sandbox Code Playgroud) 我正在使用看起来像这样的哈希:
h = {
"side1"=>["green", "Green"],
"side2"=>["verde", "Verde"]
}
Run Code Online (Sandbox Code Playgroud)
但是,它可能只有一个项目:
h = {
"side2"=>["verde", "Verde"]
}
Run Code Online (Sandbox Code Playgroud)
我想输出哈希,使它看起来像这样:
用户将side1从绿色更改为绿色,将 side2从verde更改为Verde
当有两个项目将与"和"分开.否则它将如下所示:
用户将ver2改为verde
这一切都发生在我的rails视图脚本中.如何编写代码才能执行此操作?
我有一些HTML,当条件满足时,我需要将其包装在锚标记中.我可以这样做:
<?php
$html = '<div>my html</div>';
if ($condition):
?>
<a href="http://google.com"><?php echo $html ?></a>
<?php else: ?>
<?php echo $html ?>
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)
...但我不想将html包装在引号中以将其转换为字符串.这有两个原因:语法突出显示消失,而且难以维护.
我该如何做以下事情?
<!-- pseudo code -->
<?php if ($condition): echo $this->wrapWithLinkTo('http://google.com', ?>
<div>my html</div>
<?php ); endif; ?>
Run Code Online (Sandbox Code Playgroud)
......所以最终的结果是:
<!-- when $condition is true -->
<a href="http://google.com"><div>my html</div></a>
<!-- when $condition is false -->
<div>my html</div>
Run Code Online (Sandbox Code Playgroud) 我正在创建一个用于发送电子邮件的应用.我不需要使用常规邮件程序和查看模板,因为我只是接收将用于生成电子邮件的数据.但是,我认为使用ActionMailer而不是SMTP直接交互有一些好处.我试图实例化一个新的实例时遇到了问题ActionMailer::Base.如何ActionMailer在不必定义扩展的新类的情况下单独使用ActionMailer::Base?