我有一个让我疯狂的问题,我不得不承认我在CakePHP中没有经验.正如在这个问题中提到的, 在CakePHP查找函数中使用DISTINCT,这样使用DISTINCT:
$this->Model->find('all', array('fields'=>'DISTINCT field_name'));
Run Code Online (Sandbox Code Playgroud)
不返回DISTINCT值,而是返回所有行.事实上,这里的DISTINCT完全没有意义,因为由于某种原因,CakePHP补充道TableName.id在SQL查询中(为什么??我可以删除id引用??),有效地返回每个DISTINCT主键(= all rows = unhelpful).
所以,我仍然想要返回特定field_name列的DISTINCT值.我不能只使用find('all')或find('list')函数吗?是否真的是使用上面链接中描述的Set :: extract()函数来实现它的正确方法?这似乎是CakePHP过度间接的解决方案,通常Cake会让我的生活更轻松.:-)将find和DISTINCT一起使用的正确方法是什么?也许DISTINCT不适用于find()?
看看CookBook,他们说:"做一个DISTINCT查询的快速例子.你可以用类似的方式使用其他运算符,如MIN(),MAX()等:"
<?php
array(
'fields' => array('DISTINCT (User.name) AS my_column_name'),
'order' = >array('User.id DESC')
)
?>
Run Code Online (Sandbox Code Playgroud)
资料来源:http://book.cakephp.org/2.0/en/models/retrieving-your-data.html
这表明DISTINCT应该可以使用,但是这里有什么用呢?(User.name)对应于我想要DISTINCT的field_name还是my_column_name my field_name?
最后,从CakePHP 1.x迁移到CakePHP 2.x时,是否有任何改变?即在Stackoverflow上看到的CakePHP 1.x的答案仍然相关吗?
提前致谢!
我正在Windows 8.x计算机上本地开发我的Web应用程序.现在我正在更新灵活的盒子布局模块支持的网页设计.
可以轻松测试Chrome和IE的设计.但有没有办法在本地测试Safari 6.1+支持?
似乎Apple不再为Windows开发Safari浏览器,而Safari 5.1是Windows的最新版本.Safari 5.1不支持最新的flexbox语法.
有没有一种简单的方法可以在Windows 8.x上进行本地测试,或者我是否可以在iOS设备上进行本地测试或将新设计置于现场,以便我可以在各种测试站点上进行测试?
我收到以下错误:
getimagesize(https://static1.squarespace.com/static/570d03d02b8dde8b2642afca/570f74e87c65e4819dec6812/57272dbfb6aa606f78a5d8b5/1470397291105/4XTRYCK3.jpg):无法打开流:HTTP请求失败!HTTP/1.1 400错误请求
我的浏览器中的图像打开没有问题.
有谁知道为什么会失败?
我想允许用户可以在我的论坛中使用的HTML标签的有限白名单.所以我已经像这样配置了HTML Purifier:
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Allowed', 'p,a[href|rel|target|title],img[src],span[style],strong,em,ul,ol,li');
$purifier = new HTMLPurifier($config);
Run Code Online (Sandbox Code Playgroud)
我想知道的是,HTML Purifier的默认配置是否仍然适用,但接受的HTML标签数量减少或者我是否需要手动重新设置每个可能的配置参数?
另外,我应该以任何方式调整默认配置以保证安全吗?我是整个XSS保护的新手,是HTML Purifier的新手,并没有发现手册提供了很多"基本"提示和提示.
我有几个列(ip,provider_id),我希望值的组合始终是唯一的.因此,我正在尝试构建自定义验证功能.但我有问题抓住二级领域的价值.这是我目前在模型中的代码:
public $validate = array(
'ip' => array(
'rule' => array('uniqueClick', 'provider_id'),
'message' => 'The click is not unique.'
)
);
public function uniqueClick ($ip, $field) {
$count = $this->find('count', array('conditions' => array('ip' => $ip, 'provider_id' => $field)));
// echo $field;
return $count == 0;
}
Run Code Online (Sandbox Code Playgroud)
所以问题是当我测试加载到$ field中的值时,它只是'provider_id',一个字符串.我希望它包含'provider_id'字段的值.有没有人知道如何获取该值(以及必要时的所有其他辅助模型字段值)并将其发送到自定义验证函数?
我在CookBook上的阅读和那些讨论类似问题的人似乎认为这个解决方案可行,但不幸的是不适合我.
提前致谢!
我在网上商店的产品中添加了Pinterest PinIt按钮.这就是Pinterest要我这样做的方式:
http://business.pinterest.com/widget-builder/#do_pin_it_button
我已成功实现了页面上所有产品的按钮,并且工作正常.关于他们希望我添加的脚本,我真的需要吗?它是为了什么?可以不包含它吗?我想知道因为它似乎干扰了我正在做的一些AJAX提交(不确定原因)并且按钮似乎在没有脚本的情况下工作正常.
我的代码中有以下内容:
$mixed = array();
$mixed[0] = "It's a zero!";
$mixed['word'] = "It's a word!";
foreach ($mixed as $key => $value) {
if ($key == 'word') {
echo $value.'<br />';
}
}
Run Code Online (Sandbox Code Playgroud)
以上由于某种原因打印出"它是零!" 和"这是一个字!".我期待它只打印"这是一个字!".这是为什么??我觉得我错过了一些重要的东西.当我===在if语句中使用时,它按预期工作,换句话说它只打印"这是一个字!".我知道相等和相同的运算符之间存在差异,但第一个例子不等于它吗?
我试图根据以下配置设置变量$ purchase以在我的电子邮件模板中使用:
App::uses('CakeEmail', 'Network/Email');
$email = new CakeEmail();
$email->emailFormat('html');
$email->template('new_order_email', 'default');
$email->from(array('info@mydomain.com' => 'A Great Site'));
$email->to($this->request->data['email']);
$email->subject('Order details');
$email->viewVars($purchase);
$email->send();
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在模板中使用$ purchase变量时,这不起作用.相反,发送的电子邮件包含以下错误:
注意(8):未定义的变量:购买[APP/View/Emails/html/new_order_email.ctp,第2行]
这表明$ purchase不可用,即使我使用CakeEmail设置了该变量:viewVars(); 功能.我有这个问题的任何想法?
cakephp ×3
cakephp-2.0 ×3
php ×2
css ×1
distinct ×1
email ×1
extract ×1
find ×1
gd ×1
getimagesize ×1
htmlpurifier ×1
javascript ×1
pinterest ×1
safari ×1
unique ×1
validation ×1
windows-8 ×1
xss ×1