小编Dar*_*ein的帖子

如何最好地在页面之间为用户传递消息

所以事件链是:

  1. 用户提交表单.
  2. 在处理提交期间,会生成一条消息,例如"您的记录已保存".
  3. 用户被重定向到新页面,比如搜索结果.
  4. 新页面需要显示消息.

那么,问题是如何从第2步到第3步获取消息?这只是一个简单的例子......还有许多其他更复杂的例子.

我正在使用PHP.

需求:

  • 支持多条消息,需要根据需要在接收机器上进行格式化
  • 消息可以添加到同一页面上(例如在步骤4中)
  • 从任何函数或对象内部添加的消息

我提出了一些选择:

  • 作为数组存储在会话变量中,并在每次显示后清空
  • 传递为get或query参数; 因为你经常处理这个并且必须记得得到它会变得烦人; 因为它可以变长,它可以很容易地超过查询字符串的最大长度
  • 基于每个会话存储在数据库中(可能并不总是为登录用户); 这将需要在每个页面上添加额外的插入,可能是多个,并在每个页面上进行额外选择

目前我一直在会话中将消息存储在一个数组中,但我想知道是否有更好的方法.我不认为上面的其他两个选项非常好.

编辑:我使用会话方法的2个函数:AddStatusMsg()(向数组添加元素)和DisplayStatusMsg()(返回HTML格式的消息并清空数组).

php session messages status-message

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

jQuery:val()的速度足以反复使用,或者将值放在变量中更好

如果您正在执行以下操作:

var i = $('input[@name=some_field]');
if (i.val() != '' && !(i.val() >=1 && i.val() <= 36) || i.val() == 'OT')) {
     i.focus();
}
Run Code Online (Sandbox Code Playgroud)

i.val()速度不够快,多次使用它,或者你应该做的:

var value = i.val();
Run Code Online (Sandbox Code Playgroud)

首先在if语句中使用value,如:

var i = $('input[@name=some_field]');
var value = i.val();
if (value != '' && !(value >=1 && value <= 36) || value == 'OT')) {
     i.focus();
}
Run Code Online (Sandbox Code Playgroud)

...?

javascript jquery

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

从当前页面的位置解析锚点的最简单方法是什么?

我需要window.location在JavaScript中使用锚点,例如以下url:

http://www.example.com/page.html#anchor1
Run Code Online (Sandbox Code Playgroud)

什么是最简单的方法?

javascript

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

数组$ arr + = array $ arr1做什么?

我最近经常看到以下内容,我想知道它的作用是什么?我似乎无法在PHP手册中找到它.

 $arr1 = array('key' => 'value1');
 $arr2 = array('key' => 'value2');
 $arr1 += $arr2;
Run Code Online (Sandbox Code Playgroud)

它与array_merge类似吗?

我知道以下是什么,但我不明白它在使用数组时的作用:

 $var1 = 1;
 $var2 = 2;
 $var1 += $var2;
 echo $var1; // 3
Run Code Online (Sandbox Code Playgroud)

php array-merge

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

Kohana 3 ORM as_array 返回 ORM 数组

我正在执行一个简单的查询并想要取回一个数组。根据 Kohana 3 指南附带的 ORM 教程,我认为我可以执行以下操作:

ORM::factory('user')->find_all()->as_array();
Run Code Online (Sandbox Code Playgroud)

但这似乎给了我一个模型对象数组(即数组(User_Model1,User_Model2 ...

查看源代码,我可以通过使用以下补丁轻松解决此问题。

modules/database/classes/kohana/database/result.php
@@ -94,7 +94,7 @@
                        foreach ($this as $row)
                        {
-                               $results[] = $row;
+                               $results[] = $row->as_array();
Run Code Online (Sandbox Code Playgroud)

这似乎更符合用户指南所说的:

ORM 的一个强大功能是 ORM::as_array 方法,它将以数组的形式返回给定的记录。如果与 ORM::find_all 一起使用,将返回所有记录的数组。一个很好的例子是什么时候使用选择列表:

// 显示用户名的选择字段(使用 id 作为值) echo Form::select('user', ORM::factory('user')->find_all()->as_array('id', 'username') ));

想知道这是否是故意的,如果是,为什么?如果我确实想创建一个关联数组的数组,有什么更好的解决方法?

php orm kohana-3 kohana-orm

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

mod_rewrite mod_pagespeed RewriteCond

我的.htaccess文件中有以下内容:

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
Run Code Online (Sandbox Code Playgroud)

服务器管理员安装了Google mod_pagespeed,当然,因为该文件夹不存在,所以每次尝试访问时都会记录错误/mod_pagespeed_beacon(并且不会记录任何统计信息).

RewriteCond我需要添加什么(以及在哪里)/mod_pagespeed_beacon才能工作?

.htaccess mod-rewrite mod-pagespeed

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

如何在Kohana的查询构建器中使用ORDER BY和GROUP BY构建UNION查询?

我正在尝试使用Kohana的查询构建器构建 UNION查询.一切正常,直到我添加GROUP BY或ORDER BY子句.

这是我正在使用的代码(简化):

$query1 = DB::select('p.name')
    ->from(array('person', 'p'))
    ->where('p.organization', 'LIKE', 'foo%')
    ->limit(10);

$names = DB::select('sh.name')
    ->union($query1, FALSE)
    ->from(array('stakeholder', 'sh'))
    ->where('sh.organization', 'LIKE', 'foo%')
    ->group_by('name')
    ->order_by('name')
    ->limit(10)
    ->execute()
    ->as_array();
Run Code Online (Sandbox Code Playgroud)

它不是在整个查询结束时添加GROUP BY和ORDER BY,而是在第二个查询之后立即添加它.

这是生成的SQL:

 SELECT sh.name FROM stakeholder AS sh WHERE sh.organization LIKE 'foo%' 
 GROUP BY name ORDER BY name LIMIT 10
 UNION
 SELECT p.name from person AS p WHERE p.organization LIKE 'foo%' LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

我想要的是:

 SELECT sh.name FROM stakeholder AS sh WHERE sh.organization LIKE 'foo%'
 UNION
 SELECT p.name from …
Run Code Online (Sandbox Code Playgroud)

php mysql kohana-3

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

如何使用 PhpWord 读取 Doc 文件?

最近我下载了从 github 下载的 php word,但我不知道如何通过这个读取 word 文件?这个库没有帮助。我看到一个与 php excel 相同的文件,但不知道如何使用 . 下面的文件:simple01 sample.php

<?php

error_reporting(E_ALL);

if(php_sapi_name() == 'cli' && empty($_SERVER['REMOTE_ADDR'])) {
    define('EOL', PHP_EOL);
}
else {
    define('EOL', '<br />');
}

require_once '../src/PHPWord.php';

// New Word Document
echo date('H:i:s') , " Create new PHPWord object" , EOL;
$PHPWord = new PHPWord();

// New portrait section
$section = $PHPWord->createSection();

// Add text elements
$section->addText('Hello World!');
$section->addTextBreak(2);

$section->addText('I am inline styled.', array('name'=>'Verdana', 'color'=>'006699'));
$section->addTextBreak(2);

$PHPWord->addFontStyle('rStyle', array('bold'=>true, 'italic'=>true, 'size'=>16));
$PHPWord->addParagraphStyle('pStyle', array('align'=>'center', 'spaceAfter'=>100));
$section->addText('I am …
Run Code Online (Sandbox Code Playgroud)

php phpword

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

Gedmo 学说扩展中的个人翻译是什么?

在Gedmo Doctrine Extensions的可翻译行为中,有关于“个人翻译”的说明。有人可以澄清什么是个人翻译吗?

symfony doctrine-extensions

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

在PHP中不加载未使用的脚本有多重要?

在90%的页面使用相同库的站点上,您是应该一直加载库还是仅在需要时加载它们?其他页面将是ajax或没有任何实际功能的简单页面.

此外,您是否只在需要时加载代码?如果你在页面的某个部分需要一个库,那么你应该加载它还是只在顶部加载它.也许它可能永远不会在错误或错误的数据之前到达那里.(在顶部加载使其更容易理解,但可能导致不需要额外的代码.)

我也想知道我是否应该使库更具体,所以我不是说在查看的同时加载代码进行编辑?

基本上,我应该担心加载代码或不加载代码多少钱?

php optimization

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