我正在构建一个站点,该站点需要为每个配置文件提供唯一的子域.我使用的技术是Cake PHP + MongoDB.我需要知道同样的可行性.我是否可以创建物理DNS,或者我可以通过Cake PHP中的Routes Class来简单地路由用户的Profile页面.请提出一些更好,更简单的实施方法以及相同的可行性.
提前致谢.
我是蛋糕php的初学者.我需要将我的HTML模板转换为Cake PHP模板.任何的想法?
在模型上执行find()操作时,是否有一种指定列别名的好方法?
$this->User->find('first', array(
'fields' => array(
'CONCAT(firstname, ' ', surname) AS fullname',
'email',
'tel'
)
);
Run Code Online (Sandbox Code Playgroud)
目前,如果我这样做,它会返回如下数据:
Array
(
[0] => Array
(
[fullname] => John Smith
)
[User] => Array
(
[email] => jsmith@example.com
[tel] => 0123456789
)
)
Run Code Online (Sandbox Code Playgroud)
有没有办法让它像普通列一样返回列别名?
Array
(
[User] => Array
(
[fullname] => John Smith
[email] => jsmith@example.com
[tel] => 0123456789
)
)
Run Code Online (Sandbox Code Playgroud) 我正在努力CakePHP
并试图了解使我的应用程序保持一致和合乎逻辑的最佳方法.
现在我正在尝试Model data validation
处理和处理验证错误view
,我怀疑如果我想在返回的错误中插入一些链接,我应该怎么做,例如忘记密码.
HtmlHelper
在模型中使用(如果可能的话)在我的应用程序中返回一致的链接是好的,还是我应该考虑另一种方式?
<?php
App::import('Helper', 'Html');
class User extends AppModel {
var $name = 'User';
var $validate = array (
'email' => array (
'checkEmail' => array (
'rule' => array('email', true),
'message' => 'Email not valid message.'
),
'checkUnique' => array (
'rule' => 'isUnique',
'message' => 'This email is allready in the db, if you forgot the password, '.(string)$this->Html->link('click here', array('controller' => 'users', 'action' => 'password-recover')).'.'
)
)
// …
Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法可以在CakePHP中使用Coffeescript?Rails有Barista,但我找不到类似于CakePHP的东西.理想情况下,透明的东西会将coffeescript按需编译为javascript,并且只有在它发生变化时才会编译.
CakePHP和Coffeescript的谷歌搜索结果引发了很多关于蛋糕命令之间冲突的讨论,但对于将它们一起使用的方式并不多.有人发现了什么吗?或者也许是我自己如何实现这样一个插件的想法?
我有一个相当修改的分页查询使用了许多连接等 - 但由于某种原因,paginator-> counter()永远不会匹配计数查询的结果.
您可以在http://dev.qreer.com/上看到它的运行情况- 通过在LHS导航上选择各种选项,查询输出在下面,并且分页器计数看起来非常随机.
知道我可以开始调试这个吗?
在Jobs Controller中:
$this->paginate = $this->Job->paginateParams($data);
$jobs = $this->paginate('Job');
$this->set(compact('jobs'));
Run Code Online (Sandbox Code Playgroud)
在模型中:
function paginateParams($data = null){
//lots of joins + conditions
return array('contain' => $contain, 'recursive' => 0,'joins' => $joins, 'conditions' => $conditions, 'group' => 'Job.id', 'order' => $order);
}
Run Code Online (Sandbox Code Playgroud)
示例连接(所有连接表和数据表的内部连接):
array(
'table' => 'education_backgrounds',
'alias' => 'EducationBackground',
'type' => 'INNER',
'conditions' => array('EducationBackgroundsJobs.education_background_id = EducationBackground.id'),
),
Run Code Online (Sandbox Code Playgroud)
样品条件:
'EducationBackground.name' => array('Aerospace Engineering');
Run Code Online (Sandbox Code Playgroud) 所以我让我的JavaScript进行Ajax调用,/my_controller/ajax_action
但是在控制器中我不知道如何将某些内容输出回JavaScript.
我收到错误,因为没有查看,MyController::ajaxAction()
但显然没有查看,所以我该怎么办?
我正在创建一个存储在蛋糕Session变量中的候选名单
$this->Session->read('Item.shorlist');
Run Code Online (Sandbox Code Playgroud)
这包含逗号分隔ID的列表,例如.1,2,3,4,5
$shortlist = $this->Session->read('Item.shorlist');
Run Code Online (Sandbox Code Playgroud)
我想在查找条件中使用此变量中的逗号分隔ID执行查找操作,例如:
$shortlist = $this->Item->find('all', array('conditions' => array('Item.id' => array($shortlist))));
Run Code Online (Sandbox Code Playgroud)
但是,这只返回1组数据.如果我手动输入数组,例如:
$shortlist = $this->Item->find('all', array('conditions' => array('Item.id' => array(1,2,3,4,5))));
Run Code Online (Sandbox Code Playgroud)
我得到了所有5条记录.
任何想法如何解决这个问题而不对每个id执行多次查找?如果我查看SQL转储,我可以看到WHERE Item
.id
=('1,2,3,4,5')使用$ shortlist变量,而如果我以逗号分隔的整数手动输入,例如:WHERE Item
.id
IN(1,2,3,4)然后sql查询按照我的意愿工作.所以我想我的问题是如何将逗号分隔的字符串转换为变量中的逗号分隔整数,以便SQL不会抛出错误?
我正在使用CakePHP构建API.
我想从我的移动应用程序中使用PUT来更新数据.格式为JSON作为输入,但$ this-> data似乎为null.
我从我的应用程序中调用此url(在文档中指定):/ recipes/123.json
在我的"食谱"(或其他)中,我有以下控制器:
function edit($id = null) {
$this->User->id = $id;
if (empty($this->data)) {
$this->data = $this->User->read();
$message = array('StatusCode' => 999, 'ERROR' => "");
} else {
if ($this->User->save($this->data)) {
$message = array('StatusCode' => 200, 'ErrorCode' => "");
} else {
$message = array('StatusCode' => 400, 'ErrorCode' => "UnknownError");
}
}
$this->set(compact("message"));
$this->set('albums', $this->User->Album->find('list'));
}
Run Code Online (Sandbox Code Playgroud)
我正确地在我的应用程序中收到JSON响应但是我得到了999错误 - 意味着$ this->数据为空.在我的控制器中的add函数中,它使用POST接收JSON - $ this->数据被正确分配.哦,如果我在编辑中使用POST而不是PUT - $ this->数据设置,但我无法保存数据..
那么..我该怎么做?:S
我希望能够在CakePHP中从视图(或控制器,如果可能)添加元标记
我有一个类似的页面,/mycontroller/myview
但是当使用以下过滤器访问它时:
/mycontroller/myview/page:2/max_price:500
然后我想添加meta no follow标签.
HtmlHelper类有一个meta方法.
当我这样称呼时:
$this->Html->meta('keywords', 'test test test', array('inline'=>false));
Run Code Online (Sandbox Code Playgroud)
它会创建一个这样的元标记:
<meta name="keywords" content="test test test" />
Run Code Online (Sandbox Code Playgroud)
但是,当我这样称呼时:
$this->Html->meta('robots', 'noindex, nofollow', array('inline'=>false));
Run Code Online (Sandbox Code Playgroud)
我自然会期望并希望它创造这个:
<meta name="robots" content="noindex, nofollow" />
Run Code Online (Sandbox Code Playgroud)
相反,我得到了这个:
<link href="http://www.example.com/mycontroller/noindex, nofollow" type="application/rss+xml" rel="alternate" title="robots" />
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
cakephp ×10
php ×4
cakephp-1.3 ×2
model ×2
ajax ×1
api ×1
arrays ×1
coffeescript ×1
dns ×1
find ×1
html ×1
html-helper ×1
jquery ×1
json ×1
mysql ×1
pagination ×1
rest ×1
sql ×1
subdomain ×1