小编Cam*_*ron的帖子

检测对象是否为空

我有以下jQuery代码:

var shown = $('div.slideshow').find('div.slide:visible');
var next = shown.next();

if(next == '') {                        
    console.log('empty');                       
}
Run Code Online (Sandbox Code Playgroud)

基本上当下一个像空时一样回来时:[]我希望能够检测到这一点.我该怎么做?

jquery

6
推荐指数
1
解决办法
4083
查看次数

使用Sessions vs Tokens进行API身份验证

我为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响应.

因此,基本上用户在与服务器通信的设备上保持登录的持续时间.这与需要为每个请求传递的令牌不同,在此示例中,它们具有会话.

现在问题...... …

api cakephp

6
推荐指数
2
解决办法
2万
查看次数

CakePHP日期选择的默认值

我有一组选择出生日期:

<?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)

但我不知道如何通过自动日期输入来做到这一点......

有人可以帮忙吗?谢谢

php cakephp cakephp-2.0

5
推荐指数
3
解决办法
1万
查看次数

在CakePHP中创建后向链接用户引用程序

我已经尝试在我的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

php cakephp

5
推荐指数
2
解决办法
1万
查看次数

使用jQuery UI删除成功时可删除的功能

我有以下代码,允许您在页面上拖放元素,并成功删除它运行一个名为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类...

任何想法为什么这不起作用?我无法显示一个小提琴,因为完整的代码库相当大(但不会直接影响这个)但是上面的例子应该足以解释这个问题,希望有一个解决方案.

jquery jquery-ui

5
推荐指数
2
解决办法
1万
查看次数

使用CakePHP创建API

我有一个简单的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做什么不同呢?我是构建应用程序的新手,我的优势在于前端而不是后端开发,所以任何指针,对此的帮助将非常感激.

php cakephp

5
推荐指数
1
解决办法
5987
查看次数

使用Twitter Bootstrap Typeahead处理对象

我正在使用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}]

jquery bootstrap-typeahead

5
推荐指数
1
解决办法
2万
查看次数

根据滚动方向和高度加载和删除内容页面

我有简单的数据网格,如下所示:

<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)

javascript jquery

5
推荐指数
1
解决办法
479
查看次数

CakePHP 3.0查询字符串参数vs传递的参数

在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版本中的更改将如何改善这一领域的内容......

php cakephp cakephp-3.0

5
推荐指数
1
解决办法
7784
查看次数

使用.htaccess从Apache上的CakePHP 2.x中删除或添加尾部斜杠

我正在尝试使用以下.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文件中.

apache .htaccess cakephp

5
推荐指数
1
解决办法
2212
查看次数