小编Nic*_*ick的帖子

CakePHP 2.1.0:如何创建"向下维护"页面

我正在尝试使用CakePHP 2.1.0 实现Mark Story的"Down for Maintenance"页面.我非常接近实现这个目标,但我遇到了两个问题,我可以使用一些帮助.首先,这里是所有相关代码(六个文件):

1)app/Config/bootstrap.php:

Configure::write('App.maintenance', true);
Run Code Online (Sandbox Code Playgroud)

2)app/Config/core.php:

Configure::write('debug', 1);

...

Configure::write('Exception', array(
    'handler' => 'ErrorHandler::handleException',
    'renderer' => 'AppExceptionRenderer',
    'log' => true
));
Run Code Online (Sandbox Code Playgroud)

3)app/Controller/AppController.php:

if (Configure::read('App.maintenance') == true) {
    App::uses('DownForMaintenanceException', 'Error/Exception');
    throw new DownForMaintenanceException(null);
}
Run Code Online (Sandbox Code Playgroud)

4)app/Lib/Error/Exception/DownForMaintenanceException.php:

<?php
class DownForMaintenanceException extends CakeException {}
Run Code Online (Sandbox Code Playgroud)

5)app/Lib/Error/AppExceptionRenderer.php:

<?php
App::uses('ExceptionRenderer', 'Error');

class AppExceptionRenderer extends ExceptionRenderer {
    function _outputMessage($template) {
        // Call the "beforeFilter" method so that the "Page Not Found" page will
        // know if the user is logged in or …
Run Code Online (Sandbox Code Playgroud)

cakephp cakephp-2.1

4
推荐指数
1
解决办法
3750
查看次数

PHP:UPLOAD_ERR_INI_SIZE 有什么意义?

PHP 手册中有一个名为“处理文件上传”的部分。该部分有一个名为“错误消息解释”的小节。该小节描述了一个名为“UPLOAD_ERR_INI_SIZE”的错误:

值:1;上传的文件超出了php.ini中的upload_max_filesize指令。

但是,根据我的经验,不可能使用 UPLOAD_ERR_INI_SIZE 检查此特定错误,因为如果用户上传的文件超出了 php.ini 中的 upload_max_filesize 指令,则 $_FILES 超全局为空。想亲自测试一下吗?将其另存为“upload_test.php”,然后尝试上传一个低于限制的文件,然后上传一个超过限制的文件:

<?php

    if (isset($_GET['submitted']) && $_GET['submitted'] === 'true')
    {
        echo 'Contents of $_POST:<hr><pre>';
        print_r($_POST);
        echo '</pre><hr>Contents of $_FILES:<hr><pre>';
        print_r($_FILES);
        echo '</pre><hr>';
        exit;
    }

    $max_filesize_in_mib = min((int)(ini_get('upload_max_filesize')), (int)(ini_get('post_max_size')), (int)(ini_get('memory_limit')));

?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>PHP Upload Test</title>
    </head>
    <body>
        <h1>Upload a File (Maximum File Size: <?php echo $max_filesize_in_mib; ?> MiB)</h1>
        <form action="upload_test.php?submitted=true" enctype="multipart/form-data" method="post">
            <input type="file" name="upload_test"> …
Run Code Online (Sandbox Code Playgroud)

php error-handling file-upload

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

PHP:获取目录中文件数量的最有效方法

考虑这两个文件夹结构:

Foo/
    Folder1/
        File1.txt
    Folder2/
    Folder3/
    File2.txt

Bar/
    Folder1/
        Folder2/
    Folder3/
    Folder4/
Run Code Online (Sandbox Code Playgroud)

我想知道PHP中最有效的方式告诉我"Foo"文件夹中有两个文件,而"Bar"文件夹中没有文件.请注意,它是递归的.尽管"FILE1.TXT"文件不是立即的"富"文件夹内,我还是希望它计数.另外,我不关心文件的名称是什么.我只想要文件总数.

任何帮助,将不胜感激.谢谢!

php

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

更改CreateView和UpdateView中使用的表单的<input>类型和属性

我正在尝试使用Django 1.4.6项目跟踪销售线索.我希望这是适合移动设备的,所以我使用的是带有django-crispy-forms的 Twitter Bootstrap(仍在2.3.2版本上).根据这篇文章,做电子邮件领域<input type="email" autocapitalize="off" autocorrect="off">的最佳方法是,做日期字段的最佳方法是<input type="date">.默认情况下,Django都没有实现这些属性,我想知道如何最好地实现它们.这是相关代码(简化):

models.py

from django.db import models


class Lead(models.Model):
    name = models.CharField(max_length=50)
    email = models.EmailField(blank=True, null=True)
    initial_contact_date = models.DateField()

    class Meta:
        ordering = ('name',)

    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

views.py

from django.core.urlresolvers import reverse
from django.views.generic import CreateView, ListView, UpdateView
from .models import Lead


class LeadAdd(CreateView):
    model = Lead

    def get_context_data(self, **kwargs):
        context = super(LeadAdd, self).get_context_data(**kwargs)
        context['title'] = 'Add a Lead'
        return context

    def get_success_url(self):
        return reverse('lead_list')


class …
Run Code Online (Sandbox Code Playgroud)

django django-crispy-forms

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

DataTables:禁用标题点击排序,仍然允许手动排序

我正在使用DataTables,并希望使用下拉菜单进行排序,而不是单击表头.我有下拉菜单排序功能,但我无法弄清楚如何禁用表头排序而不禁用下拉菜单排序.如何禁用只表头排序?

的jsfiddle

JavaScript的

function update_sort() {
    var sort1 = $('#sort1').val();
    var sort2 = $('#sort2').val();
    var sort3 = $('#sort3').val();

    var sorting = [[sort1, 'asc']];

    if (sort2) {
        sorting.push([sort2, 'asc']);
    }

    if (sort3) {
        sorting.push([sort3, 'asc']);
    }

    var table_obj = $('table').dataTable();

    table_obj.fnDestroy();

    table_obj.dataTable({
        'bPaginate': false,
        'bFilter': false,
        'bInfo': false,
        'aaSortingFixed': sorting
    });
}

update_sort();

$('p select').change(function() {
    update_sort();
});
Run Code Online (Sandbox Code Playgroud)

HTML

<p>
    Sort By:

    <select id="sort1">
        <option value="0">Column 1</option>
        <option value="1">Column 2</option>
        <option value="2">Column 3</option>
    </select>

    Then By:

    <select …
Run Code Online (Sandbox Code Playgroud)

jquery datatables

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

CakePHP 2.0.4:在控制器中使用"数字"助手

我知道在控制器中使用帮助器是违反MVC方法的,但在某些情况下它很有用.例如,考虑我的一个处理图像上传的CakePHP 1.3.13项目的控制器代码片段:

elseif ($_FILES['data']['error']['ModelName']['field_name'] === UPLOAD_ERR_INI_SIZE) {
    App::import('Helper', 'Number');
    $Number = new NumberHelper();

    $this->Session->setFlash("The image you uploaded was not saved because it appeared to be larger than {$Number->toReadableSize($max_filesize_in_bytes)}.");
}
Run Code Online (Sandbox Code Playgroud)

我现在正在开发一个CakePHP 2.0.4项目,我使用了相同的代码,除了我替换App::import('Helper', 'Number');了App::uses('NumberHelper', 'View/Helper');,我得到了这个错误信息:

Warning (4096): Argument 1 passed to Helper::__construct() must be an instance of View, none given, called in /Path/To/My/Website/app/Controller/MyController.php
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

model-view-controller cakephp cakephp-2.0

0
推荐指数
1
解决办法
3102
查看次数