如何在CakePHP中显示PNG图标?我正在使用$this->Html->meta('icon')
但它.ico
在根目录中查找.如何更改它以便查找.png
?
我正在构建一个内置在PhoneGap中的简单应用程序,它使用REST API从我的网站上加载数据(因为你无法在PhoneGap中运行PHP).
列出一些数据的示例可能是:
$.ajax({
url: 'http://myserver.com/posts/index.json',
dataType: 'jsonp',
success: function(data) {
for (var i=0,total=data.length; i<total; i++)
{
console.log(data.Post.title[i]);
}
}
});
Run Code Online (Sandbox Code Playgroud)
这很好,返回的数据可以在我的PhoneGap应用程序中使用.但是,假设帖子列表要求您登录...
我该怎么处理?因为与重定向到登录表单的普通身份验证请求不同,在我的JSON世界中,这不会发生.实际上会发生什么是返回实际的HTML登录表单然后导致错误,因为我的JavaScript期望JSON而不是HTML.
是否有处理此问题的最佳做法,例如,如果要求身份验证,则在PhoneGap应用程序中加载登录表单视图,而不是从应用程序返回HTML登录表单,因为它正在进行此操作?也许通过JSON发送auth请求?
举个例子,一个简单的JSONized方法如下:
public function index() {
$this->set('posts', $this->paginate());
$this->set('_serialize', array('posts'));
}
Run Code Online (Sandbox Code Playgroud)
并且如前所述,我可以beforeFilter
通过不将方法名称传递给我来保护此方法$this->Auth->allow()
.所以我假设我需要在beforeFilter中做一些聪明的事情才能知道请求是否是JSON,如果是,那么检查方法是否需要授权然后如果是这样的话要么发回错误(而不是像HTML那样的HTML表单)通过JSON中的AuthComponent)或允许访问.
更新:2012年1月13日
在对这个主题进行了一些研究之后,我看了一下Forrst API,因为它们似乎已经有效地构建了我想要用RESTful API构建的东西.
例如,他们有一个如下调用:https://forrst.com/api/v2/post/comments?tiny_id = HUD这基本上是说显示带有微小ID的HUD的帖子的评论.如果您未经过身份验证,您将获得以下内容:
{"resp":{"error":"this method requires authentication"},"stat":"fail","in":0.0903,"authed":false,"authed_as":false,"env":"prod"}
Run Code Online (Sandbox Code Playgroud)
现在有趣的部分是即使我登录Forrst我仍然会收到该错误消息,因为它没有查看我的会话,而是期望某种令牌来验证实际请求.例如?access_token=550e8400-e29b-41d4-a716-446655440000
所以我想这里的主要问题是如何将其构建到我的Cake App中?计划如下:
在我的应用程序中,无论您是通过AJAX还是在浏览器中请求,它都会将您重定向到登录页面.Forrst处理它们并且在调用它的API时总是返回JSON错误并且不会返回HTML!这是我想在实现中实现的目标.我已将access_token列添加到我的users表中(出于安全原因,每当有人更新其密码时,该表都会更改).下一步是A)检查受保护方法的访问令牌,如果正确则允许或拒绝,然后B)当没有令牌存在或不正确并且发送正确的错误状态而不是HTML登录时我需要处理形成.
我使用AngularJS和UI的路由器和我app.js
.我有以下几行:
$urlRouterProvider.otherwise('/');
Run Code Online (Sandbox Code Playgroud)
但是,我不希望它将用户发送到URL,而是 发送到以下状态:
.state('404',
{
views: {
'body': {
templateUrl: 'partials/404.html',
}
}
});
Run Code Online (Sandbox Code Playgroud)
通常我会这样做:
$state.go('404');
Run Code Online (Sandbox Code Playgroud)
如何为其他方法执行此操作?
注意:我的404状态没有URL,因此基本上它保留了用户输入或访问的URL,只是更改了模板.
我正在尝试为CakePHP中内置的API启用CORS,以便可以使用AppController中的以下内容访问所有请求:
public function beforeFilter()
{
header("Access-Control-Allow-Origin: *");
}
Run Code Online (Sandbox Code Playgroud)
这是在错误的地方吗?由于请求仍然被阻止.
更新:事实上这似乎确实有效,但因为我做的事情如下:
header('Content-Type: application/json');
echo json_encode(array('message'=>'Hello world!'));
Run Code Online (Sandbox Code Playgroud)
在我的一些方法中,它表现为好像它覆盖了标头设置AppController,所以它没有出现在JSON调用的响应中.有任何想法吗?
更新2:如下所示返回JSON,修复了问题:
$this->response->type('json');
$this->response->body(json_encode(array('message'=>'Hello world!')));
Run Code Online (Sandbox Code Playgroud)
显然header()
在Cake中使用打破以前的标题?
所以我有以下演示http://dev.driz.co.uk/week.html,它显示了一个jQuery UI datepicker,它有一年中每个月的多个实例.
我已对其进行了修改,以便用户选择整周,然后将这些周的开始和结束日期存储在右侧边栏上,并显示周数.
我想要做的是在用户选择日期后禁用日期,这样他们就可以在日历选择器上看到已选择的日期(并且还可以阻止他们多次添加相同的日期范围).
但是我不知道从哪里开始...我已经创建了一些启用和禁用日期函数但不知道如何使用beforeShowDay方法实际禁用日期.
例如:
var array = ["2013-03-14","2013-03-15","2013-03-16"]
$('.week-picker').datepicker({
beforeShowDay: function(date){
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [ array.indexOf(string) == -1 ]
}
});
Run Code Online (Sandbox Code Playgroud)
但是我如何禁用一系列日期?因为我只有开始和结束日期.我可以像在我的例子中那样在页面上使用datepicker之后调用beforeShowDay吗?我怎样才能重新启用日期?
这是代码:
$(function() {
var startDate;
var endDate;
var selectCurrentWeek = function() {
window.setTimeout(function () {
$('.week-picker').find('.ui-datepicker-current-day a').addClass('ui-state-active');
}, 1);
}
$('.week-picker').datepicker( {
defaultDate: '01/01/2014',
minDate: '01/01/2013',
maxDate: '01/01/2015',
changeMonth: false,
changeYear: true,
showWeek: true,
showOtherMonths: true,
selectOtherMonths: true,
numberOfMonths: 12,
onSelect: function(dateText, inst) {
var date = $(this).datepicker('getDate');
startDate = …
Run Code Online (Sandbox Code Playgroud) 是否可以通过HTML按钮调用chrome cast?
我写了一个使用自定义接收器的网页,基本上允许用户以统计/图表的形式向人们展示报告,但他们在屏幕上看到控件.
但是因为这是一个PURELY一个演员应用程序,我想在网页上显示一个按钮,显示用户何时不投射,然后在不投射时消失.
所以类似于:
<button id="castStart" style="display:none;">Start</button>
<button id="castStop" style="display:none;">Stop</button>
Run Code Online (Sandbox Code Playgroud)
然后一些JS喜欢:
if( CASTAVAILBLE ) {
if( CASTING ) {
$('#castStart').hide();
$('#castStop').show();
} else {
$('#castStart').show();
$('#castStop').hide();
}
$('#castStart').on('click', function(e){
startCasting();
$('#castStart').hide();
$('#castStop').show();
});
$('#castStop').on('click', function(e){
sttopCasting();
$('#castStart').show();
$('#castStop').hide();
});
}
Run Code Online (Sandbox Code Playgroud)
所以基本上计划是隐藏和显示基于它们何时投射的按钮,并且只有它们可以投射(即安装了投射扩展).
这可能吗?
更新:这似乎做我想要的:https ://chrome.com/photowall 所以它是可能的!
我有以下SQL,它会抛出错误的模糊列名'id'
select tbl_registration.*, tbl_ebp.name as ebp_name, tbl_Users.id as user_id, tbl_ebp.id as linked_ebp_id
from tbl_registration
left outer join tbl_ebp on tbl_ebp.id = tbl_registration.ebp_id
left outer join tbl_users on tbl_registration.email = tbl_users.username
where id = [PARAM]p_id
Run Code Online (Sandbox Code Playgroud)
我已经阅读了一些相关的文章,但找不到我的代码的工作解决方案.任何帮助非常感谢.
我想在CakePHP 2.1中为错误创建自定义视图
我在这里一直在阅读以下问题:CakePHP 2.0 - 如何制作自定义错误页面?
但有些东西不能按预期工作!
1.)异常和错误似乎不是一回事,好像我去了一个伪造的网址我得到了内置的404页面,但如果我在控制器中手动执行一个未发现的异常,它将调用自定义视图...为什么是这样?我认为Cake中的所有错误都经历了例外情况?
2.)我正在尝试渲染视图而不是实际重定向用户...例如:
App::uses('ExceptionRenderer', 'Error');
class AppExceptionRenderer extends ExceptionRenderer {
public function notFound($error) {
$this->controller->redirect(array('controller' => 'errors', 'action' => 'error404'));
}
}
Run Code Online (Sandbox Code Playgroud)
而不是我正在尝试的重定向:
$this->controller->layout = null;
$this->controller->render('/Errors/error404');
Run Code Online (Sandbox Code Playgroud)
但我最终得到的只是一个空白页......这是为什么?这只发生在进行手动异常时?
有人可以回答这两个问题吗?谢谢
我有以下测试应用程序:http://dev.driz.co.uk/ajax/
您可以使用jQuery AJAX单击要在其他页面中加载的链接,有两种类型,globalTabs和localTabs,它们将内容加载到不同的面板中.注意:每个页面实际上是整页,但我们只使用jQuery find方法获取我们想要的内容.
为了增强这一点,我使用的是HTML5 History API(用于跨浏览器的History.js).
标题和网址变化很好,历史堆栈正在成功推送,当我使用后退和前进按钮时,网址和标题会恢复原状.
现在,复杂的部分正在加载回来自先前状态的内容,并且更复杂地加载正确的类型,例如全局或本地ajax.为了实现这一点,我想我需要将数据和类型传递给push状态,以便可以再次为popstate重用它...
谁能帮助我指出正确的方向?我有所有的第一部分工作,只是将ajax类型传递给pushState然后重新使用popstate更改的情况.
为了改进这一点,我重写如下,以显示我传递类型和数据的计划:
注意:大写历史是因为我正在使用History.js
var App = {
init: function() {
$(document).ready(function() {
$('.globalTabs li a').live('click', function (e) {
e.preventDefault();
App.globalLoad( $(this).attr('href') );
});
$('.localTabs li a').live('click', function (e) {
e.preventDefault();
App.localLoad( $(this).attr('href') );
});
});
window.addEventListener('popstate', function(event) {
// Load correct content and call correct ajax request...
});
},
localLoad: function ( url ) {
$.ajax({
url: url,
success: function (responseHtml) {
$('.localContent').html($(responseHtml).find('#localHtml'));
$data = { $(responseHtml).find('#localHtml'), 'local'}; …
Run Code Online (Sandbox Code Playgroud) cakephp ×4
jquery ×4
javascript ×3
php ×3
ajax ×1
angularjs ×1
api ×1
chromecast ×1
cordova ×1
cors ×1
datepicker ×1
history.js ×1
jquery-ui ×1
sql ×1
types ×1