几个月前我开始使用CakePHP(1.2)为公司的应用程序添加小功能,我对它不太熟悉.
在合并到生产服务器之前,我们在开发服务器上进行本地测试.
我希望每小时调用一个控制器动作,我认为通过我的研究,一个cron工作,我认为这是最好的方法.
尝试1
看完之后,
http://book.cakephp.org/1.2/en/view/110/Creating-Shells-Tasks
我可以实现没有错误的东西,但是没有执行动作.
根据这些示例,我在我的app目录(不是app/webroot)中添加了一个名为cron_dispatcher.php的文件,然后从app dir中执行了此命令
php cron_dispatcher.php/controller/action/param
当我通过url调用它时,它仍然没有发生任何事情,但它完美无缺.
尝试2
我尝试创建一个shell(email.php)来调用/ app/vendors/shells /中的操作.
<?php
class EmailShell extends Shell {
public function main() {
$this->out('Test');
}
}
?>
Run Code Online (Sandbox Code Playgroud)
这样就可以在控制台中成功输出Test
蛋糕邮件主要
但后来我找不到如何调用控制器的动作.我试过了
$这 - > requestAction( '/控制器/动作');
我还尝试从shell中的main函数进行调用.
我试图将控制器包含在$ uses变量中,就像我使用模型一样,但是没有用(并且我觉得这没有意义)
我不认为创建任务是解决方案,因为我不想复制sendEmails函数,因此我正在寻找一种方法来从shell或其他任何东西调用控制器的操作!
可能有一些我遗漏的理论,谢谢
解
我将一些方法从控制器移动到模型,我可以从shell调用它们.
App::import('Component', 'Email');
class SendMemosShell extends Shell {
var $uses = array(
'Memo',
);
public function main() {
}
public function sendEmails () {
$this->Email =& new EmailComponent(null);
$memoList = $this->Memo->getMemos();
//...
}
}
Run Code Online (Sandbox Code Playgroud)
这个链接有助于 …
我使用PHP,当我点击提交按钮时,我有一些文本在同一页面上显示为红色.这适用于Firefox,但文本仍然是黑色的IE7和IE8.
这是视图代码
if(isset($file_title)) {
echo '<text class="validation">'.$file_title.'</text>';
}
Run Code Online (Sandbox Code Playgroud)
和CSS
#content text.validation {
color:red;
}
Run Code Online (Sandbox Code Playgroud)