我有以下jQuery代码:
var shown = $('div.slideshow').find('div.slide:visible');
var next = shown.next();
if(next == '') {
console.log('empty');
}
Run Code Online (Sandbox Code Playgroud)
基本上当下一个像空时一样回来时:[]我希望能够检测到这一点.我该怎么做?
我为CakePHP应用程序构建了一个简单的测试API,允许用户从移动设备(或任何设备)登录并获得JSON响应.此API可用于内置PhoneGap的移动应用.
登录方法如下所示:
public function login()
{
if($this->request->is('post'))
{
// Use custom method in Model to find record with password params
$findUser = $this->User->findUser(
$_POST['username_or_email'],
AuthComponent::password($_POST['password'])
);
// If a user exists and matches params
if($findUser)
{
$this->User->id = $findUser['User']['id'];
$this->autoRender = false;
$this->response->type('json');
$this->response->body(json_encode(array('authenticated'=>true,'message'=>__('You have been logged in successfully'))));
}
else
{
$this->autoRender = false;
$this->response->type('json');
$this->response->body(json_encode(array('authenticated'=>false,'message'=>__('Username or password is incorrect'))));
}
}
else
{
$this->autoRender = false;
$this->response->type('json');
$this->response->body(json_encode(array('message'=>'GET request not allowed!')));
}
}
Run Code Online (Sandbox Code Playgroud)
移动设备(或任何API用户)可以发送他们的登录详细信息,然后他们将JSON的请求作为true或false获取,以进行身份验证.这个布尔值不用于给用户访问,而是告诉移动应用程序他们是否可以看到某些屏幕,他们只能获取数据,或者如果会话存在则可以发送数据!
如上所述,它们实际上也是在设备上登录API本身,因此如果他们直接访问网站(从该设备),他们将有一个会话并看到相同的JSON响应.
因此,基本上用户在与服务器通信的设备上保持登录的持续时间.这与需要为每个请求传递的令牌不同,在此示例中,它们具有会话.
现在问题...... …
我有一组选择出生日期:
<?php echo $this->Form->input('Profile.dob', array('label' => 'Date of Birth'
, 'dateFormat' => 'DMY'
, 'minYear' => date('Y') - 100
, 'maxYear' => date('Y') - 13)); ?>
Run Code Online (Sandbox Code Playgroud)
并希望在选择中将默认值设置为"DAY MONTH YEAR".
我已设法通过以下方式执行此操作:
<?php echo $this->Form->input('Profile.gender', array('label' => 'Gender', 'type' => 'select',
'options' => array('Male'=>'Male','Female'=>'Female'),'empty'=>'Select Sex')); ?>
Run Code Online (Sandbox Code Playgroud)
但我不知道如何通过自动日期输入来做到这一点......
有人可以帮忙吗?谢谢
我已经尝试在我的404错误页面中执行以下操作来创建引用页面的反向链接,这样我就不必依赖于javascript.
<?php $this->set('refer', $this->referer()); ?>
<p><?php echo '<a href="'.$refer.'">Back to previous page</a>'; ?></p>
Run Code Online (Sandbox Code Playgroud)
但它不起作用......任何想法为什么?这段代码完成了/Errors/error404.ctp
我有以下代码,允许您在页面上拖放元素,并成功删除它运行一个名为saveRatings的方法传递元素的ID.
$('.draggable').draggable({
revert: true
});
$('.droppable').droppable({
drop: function( event, ui ) {
draggedID = ui.draggable.attr("id");
droppedID = $(this).attr("id");
Global.showLoader('Saving...');
quiz1.saveRatings(draggedID, droppedID);
}
});
Run Code Online (Sandbox Code Playgroud)
计划是,一旦成功删除,它将删除被拖动的项目并从被删除的元素中删除droppable类,以防止其他元素也被丢弃:
saveRatings: function ( choiceId, ratingId ) {
// Hide the dragged choice
$('div#' + choiceId).hide();
// Remove droppable behaviour
$('div#' + ratingId).removeClass('ui-droppable');
$('div#' + ratingId).removeClass('droppable');
$('div#' + ratingId).addClass('done');
}
Run Code Online (Sandbox Code Playgroud)
删除部分工作正常,删除类但元素仍然允许其他人被删除...即使我已从元素中删除了droppable和ui-droppable类...
任何想法为什么这不起作用?我无法显示一个小提琴,因为完整的代码库相当大(但不会直接影响这个)但是上面的例子应该足以解释这个问题,希望有一个解决方案.
我有一个简单的CakePHP应用程序,允许用户创建和编辑帖子.而且我希望将来在某个时候将应用程序应用到PhoneGap中.
因此,我创建了一个API,用于在AJAX请求中使用JSON,但我觉得我做错了,因为我没有使用REST或做任何不同的事情,这使得它与控制器中的其他代码区别开来.
例如(注意:我在这个例子中缺少关于将其转换为JSON的部分)
class ApiController extends AppController {
function index() {
$posts= $this->Post->find('all');
$this->set(compact('posts'));
}
}
Run Code Online (Sandbox Code Playgroud)
要创建一个像:( domain.com/api/posts/all将创建自定义路由以实现此目的),然后我可以使用AJAX在我的移动应用程序中使用它.
现在我的问题是使用REST做什么不同呢?我是构建应用程序的新手,我的优势在于前端而不是后端开发,所以任何指针,对此的帮助将非常感激.
我正在使用Bootstrap Typeahead插件,如下所示:
$('#Organisation').typeahead({
source: function (query, process) {
return $.get(AppURL + 'Organisations/Manage/SearchByName/',
{
term: query
},
function (data) {
var results = [];
var fullResults = [];
$.each(data, function (index, item) {
results.push(item.label);
fullResults.push({
id: item.ID,
label: item.label
});
});
return process(results);
});
},
updater: function (selection) {
$('#OrganisationID').val(selection);
}
});
Run Code Online (Sandbox Code Playgroud)
我有两个返回的数组,这是因为Typeahead只需要一个字符串列表而不是一个对象.第二个数组包含label和id.
一旦用户从列表中选择一个项目,我需要从该选择中获取ID,然后使用它插入隐藏字段.但选择将只是名称,因为ID不能通过Typeahead传递.
关于如何解决这个问题的任何想法?
两个返回数组的示例:
结果: ["Organisation 1","Organisation 2"]
fullResults: [{"label":"Organisation 1","ID":2},{"label":"Organisation 2","ID":1}]
我有简单的数据网格,如下所示:
<div class="uiGridContent">
<table>
<tbody id="page-1">
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
<td>Cell 3</td>
</tr>
</tbody>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
*请注意,我在uiGridContent div上方和下方的div中的单独表格中有一个页眉和页脚.这个例子不需要.
var nextPage = 1, lastScrollTop = 0, st;
$('.uiGridContent').scroll(function(){
var st = $(this).scrollTop();
// We're scrolling down
if (st > lastScrollTop){
if( $('.uiGridContent').scrollTop() + $('.uiGridContent').innerHeight() >= $('.uiGridContent')[0].scrollHeight && nextPage < 10) {
$.ajax({
url: '<?php echo $appurl; ?>?page=' + nextPage,
success: function(data) {
nextPage = nextPage + 1;
var content = $(data).find('.uiGrid tbody').html();
$('.uiGridContent tbody').last().after('<tbody id="page-'+nextPage+'">'+content+'</tbody>');
},
error: function(data) {
alert(data); …Run Code Online (Sandbox Code Playgroud) 在CakePHP 3.0命名参数已被删除(感谢上帝),支持与其他应用程序框架内联的标准查询字符串参数.
我仍然在努力解决的问题是,在其他MVC框架中,例如ASP.NET,你将传递ActionResult中的参数(与函数相同):
Edit( int id = null ) {
// do stuff with id
}
Run Code Online (Sandbox Code Playgroud)
并且该方法将作为查询字符串传递给id:/Edit?id=1并且您将使用路由使其非常类似于:/Edit/1.
在CakePHP中,但是在函数参数中传递的内容如下:
function edit( $id = null ) {
// do stuff with $id
}
Run Code Online (Sandbox Code Playgroud)
必须作为传递参数完成,例如:/Edit/1绕过查询字符串的想法,以及路由以改进URL的需要.
如果我在该编辑的链接中命名params,如:
$this->Html->link('Edit', array('action' => 'edit', 'id' => $post->id));
Run Code Online (Sandbox Code Playgroud)
然后我必须这样做:
public function edit() {
$id = $this->request->query('id');
// do stuff with $id
}
Run Code Online (Sandbox Code Playgroud)
获取传递的参数id.想到它会在像CakePHP 3.0的ASP.NET中那样在功能中提取它,但事实并非如此.
我更喜欢在编辑链接中为传递的值添加前缀而不是仅仅传递它们,所以我不必在另一端担心序数,我知道它们是什么等等.
有没有人使用这些方法将数据传递给CakePHP中的方法,并且可以更好地了解正确的处理方式以及3.0版本中的更改将如何改善这一领域的内容......
我正在尝试使用以下.htaccess中的以下内容强制删除或添加尾部斜杠到我的CakePHP 2.x应用程序/app/webroot.
#<IfModule mod_rewrite.c>
# RewriteEngine On
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteRule ^ index.php [L]
#</IfModule>
<IfModule mod_rewrite.c>
# Add trailing slash
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|)$
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
或者以下用于添加尾部斜杠.
RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]
Run Code Online (Sandbox Code Playgroud)
但我不想强制执行域,因为它可能在本地或在子文件夹中运行.我该如何解决?我在网上看到的所有文档似乎都强制执行应用程序的完整网址.
事实上,即使我使用FULL url它仍然无法正常工作.有没有人设法让这个与CakePHP合作?似乎你必须通过index.php文件运行它
为了澄清我正在寻找一种解决方案,用于在CakePHP中添加和删除尾部斜杠,而无需将URL硬编码到.htaccess文件中.
cakephp ×6
jquery ×4
php ×4
.htaccess ×1
apache ×1
api ×1
cakephp-2.0 ×1
cakephp-3.0 ×1
javascript ×1
jquery-ui ×1