什么是在Zend Framework中使用变量重定向的推荐方法?
假设我们在控制器中有这样的动作:
public function newAction()
{
$form = new Form_ApplicationForm();
if($this->_request->isPost()){
$data = $_POST;
if($form->isValid($data)){
$appModel = new Model_Application();
$result = $appModel->createApplication($form->getValue('name'),
$form->getValue('email'),
$form->getValue('comments'));
if($result){
// redirect here
}
}else{
$form->populate($data);
}
}
$this->view->form = $form;
}
Run Code Online (Sandbox Code Playgroud)
如果我想重定向到我可以显示如下内容的URL:
"感谢您的申请,您的参考是#123"
我该如何执行此重定向?
这样的事可能吗?
$this->_redirect('/application/confirm/'.$result);
Run Code Online (Sandbox Code Playgroud)
如果是这样,我将如何访问$resultvar?
编辑或我想这会工作:
$this->_redirect('/application/confirm/?id='.$result);
Run Code Online (Sandbox Code Playgroud)
..但我不确定这是不是最好的做法?
我见过人们_forward()用于重定向的示例,但URL永远不会改变,这会产生多个提交的问题等.
我见过有人推荐,gotoSimple()但我不确定.如果这很明显,那么仍然是一个ZF noob如此道歉,但我想这无论如何都有CRUD类型系统的多种用途,所以有兴趣知道.
谢谢
我正在尝试创建一个自定义表单字段Zend_Form来存储SWFUpload所需的HTML片段(用于flash文件上传器的目的).
我已经尝试过几个不同的教程,但我感到非常困惑,到目前为止,这就是我所拥有的:
/application/forms/elements/SwfUpload.php
SwfUploadHelper.php
Run Code Online (Sandbox Code Playgroud)
这些文件在Bootstrap中自动加载(好吧,SwfUpload.php肯定是).
SwfUpload.php:
class Custom_Form_Element_SwfUpload extends Zend_Form_Element
{
public $helper = 'swfUpload';
}
Run Code Online (Sandbox Code Playgroud)
SwfUploadHelper.php:
class Custom_Form_Helper_SwfUpload extends Zend_View_Helper_FormElement
{
public function swfUpload()
{
$html = '<div id="swfupload-control">
<p>Upload upto 5 image files(jpg, png, gif), each having maximum size of 1MB(Use Ctrl/Shift to select multiple files)</p>
<input type="button" id="button" />
<p id="queuestatus" ></p>
<ol id="log"></ol>
</div>';
return $html;
}
}
Run Code Online (Sandbox Code Playgroud)
当我像这样实例化这个类:
class Form_ApplicationForm extends Zend_Form
{
public function init()
{
$custom = new Custom_Form_Element_SwfUpload('swfupload');
// etc …Run Code Online (Sandbox Code Playgroud) 我正在使用以下方法从模型中输出选择菜单的内容:
$select = $this->select();
$select->order('name');
return $this->fetchAll($select);
Run Code Online (Sandbox Code Playgroud)
但是,我想要做的是按特定值排序,然后按名称列排序.SQL看起来像这样:
SELECT * FROM `names` ORDER BY `name` = 'SomeValue' DESC,`name`
Run Code Online (Sandbox Code Playgroud)
示例SQL代码:
CREATE TABLE IF NOT EXISTS `names` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
INSERT INTO `names` (`id`, `name`) VALUES
(1, 'rob'),
(2, 'dave'),
(3, 'andy'),
(4, 'paul'),
(5, 'jason'),
(6, 'john');
SELECT *
FROM `names`
ORDER BY `name` = 'john' DESC , `name`
Run Code Online (Sandbox Code Playgroud)
返回值:
6 john
3 andy
2 …Run Code Online (Sandbox Code Playgroud) 我们在PHP/MySQL应用程序中使用了一个返回基本配置信息的函数,它包含一个简单的select查询,如下所示:
public function getConfigurationValue($field)
{
$res = mysql_query("SELECT `cfg_value` FROM `ls_config` WHERE `cfg_name` = '".mysql_real_escape_string($field)."'");
$cfg = htmlspecialchars(mysql_result($res,0));
return $cfg;
}
Run Code Online (Sandbox Code Playgroud)
我们遇到的这个问题是偶尔看似随机,这个查询会在mysql_result上抛出一个mysql错误,说"提供的参数不是一个有效的mysql结果资源".在我们的调试中,我们已经确定这不是因为$ field没有被传递.基本上,由于某种原因,我们无法确定完全有效的查询失败并且不返回导致空结果集和后续错误的结果.如果错误是由于mysql连接失败导致脚本在此之前就已经死了.此外,在某些页面加载时,此函数可能会调用50-100次,但在每次加载时只会失败一次.
如果您需要任何其他信息,请告知我们.
谢谢.
我有一个表单发布到处理脚本,检查帖子中的错误.根据处理,它的标题重定向到另一个位置.这似乎工作,但我刚刚注意到仍然在标题后执行的东西.
到底是怎么回事?
简而言之,当用户希望人们能够访问他们的个人资料时,我们希望他们能够说出去mydomain.com/username.真正的用户页面将是一些mydomain.com/users/page.php?id=1325不能真正帮助用户的东西.
问题:我已经做了一段时间的PHP,并且从来没有必要这样做.我不知道哪里可以开始?我不想做一些天真的事情,只是创建具有重定向的实际文件夹或其他东西....
任何人都可以告诉我如何在PHP中解决这个问题?
你们都是最伟大的!
这个SQL怎么了?它应返回结果但不返回任何结果
SELECT `pid`
FROM `products`
LEFT JOIN `prods_to_features`
ON (`ptf_pid` = `pid`)
WHERE ( `ptf_id` = '66'
OR `ptf_id` = '67'
)
AND (`ptf_id` = '76')
Run Code Online (Sandbox Code Playgroud)
是否不可能在左连接中使用表的第二个where子句?
我有一个在cron上运行的PHP脚本,可能需要很长时间才能完全处理(例如10分钟).如果在解析此脚本时修改了该脚本会发生什么?还是在执行期间?我问的原因是我在服务器上有许多脚本,我想放在版本控制之下,我担心如果脚本在处理时碰巧得到更新会发生什么.如果这是一个问题,那么我可以在文件运行时对文件进行某种锁定.