我正在尝试使用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) 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) 考虑这两个文件夹结构:
Foo/
Folder1/
File1.txt
Folder2/
Folder3/
File2.txt
Bar/
Folder1/
Folder2/
Folder3/
Folder4/
Run Code Online (Sandbox Code Playgroud)
我想知道PHP中最有效的方式告诉我"Foo"文件夹中有两个文件,而"Bar"文件夹中没有文件.请注意,它是递归的.尽管"FILE1.TXT"文件不是立即的"富"文件夹内,我还是希望它计数.另外,我不关心文件的名称是什么.我只想要文件总数.
任何帮助,将不胜感激.谢谢!
我正在尝试使用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) 我正在使用DataTables,并希望使用下拉菜单进行排序,而不是单击表头.我有下拉菜单排序功能,但我无法弄清楚如何禁用表头排序而不禁用下拉菜单排序.如何禁用只表头排序?
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)
<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) 我知道在控制器中使用帮助器是违反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)
有任何想法吗?
cakephp ×2
php ×2
cakephp-2.0 ×1
cakephp-2.1 ×1
datatables ×1
django ×1
file-upload ×1
jquery ×1