小编Son*_*nny的帖子

jQuery UI - 单击外部时关闭对话框

我有一个jQuery UI对话框,在单击特定元素时显示.如果点击发生在那些触发元素或对话框本身之外的任何地方,我想关闭对话框.

这是打开对话框的代码:

$(document).ready(function() {
    var $field_hint = $('<div></div>')
        .dialog({
            autoOpen: false,
            minHeight: 50,
            resizable: false,
            width: 375
        });

    $('.hint').click(function() {
        var $hint = $(this);
        $field_hint.html($hint.html());
        $field_hint.dialog('option', 'position', [162, $hint.offset().top + 25]);
        $field_hint.dialog('option', 'title', $hint.siblings('label').html());
        $field_hint.dialog('open');
    });
    /*$(document).click(function() {
        $field_hint.dialog('close');
    });*/
});
Run Code Online (Sandbox Code Playgroud)

如果我取消注释最后一部分,则对话框永远不会打开.我认为这是因为打开对话框的相同点击再次关闭它.


最终工作代码
注意:这是使用jQuery外部事件插件

$(document).ready(function() {
    // dialog element to .hint
    var $field_hint = $('<div></div>')
            .dialog({
                autoOpen: false,
                minHeight: 0,
                resizable: false,
                width: 376
            })
            .bind('clickoutside', function(e) {
                $target = $(e.target);
                if (!$target.filter('.hint').length
                        && !$target.filter('.hintclickicon').length) {
                    $field_hint.dialog('close'); …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-ui jquery-ui-dialog

111
推荐指数
9
解决办法
13万
查看次数

在PHP中运行MySQL*.sql文件

*.sql在创建新的网站数据库时使用了两个文件.第一个文件创建所有表.第二个文件填充一些默认记录.我想从PHP执行这些文件.我也使用Zend_Framework,如果这将有助于实现这一目标.

附加信息

  1. 我没有控制台访问权限
  2. 我正在尝试从我们的应用程序中自动生成网站.

使用shell_exec()......

$command = 'mysql'
        . ' --host=' . $vals['db_host']
        . ' --user=' . $vals['db_user']
        . ' --password=' . $vals['db_pass']
        . ' --database=' . $vals['db_name']
        . ' --execute="SOURCE ' . $script_path
;
$output1 = shell_exec($command . '/site_db.sql"');
$output2 = shell_exec($command . '/site_structure.sql"');
Run Code Online (Sandbox Code Playgroud)

...我从来没有得到有用的输出,但在另一个线程上遵循一些建议,最后让它全部工作.我切换到命令的格式,而不是执行文件.--option=value--execute="SOURCE ..."<

此外,我从来没有得到shell_exec()和和之间的差异的良好解释exec().

php mysql scripting zend-framework

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

如何在Zend_Form文件元素上使用ViewScripts?

我将此ViewScript用于我的标准表单元素:

<div class="field" id="field_<?php echo $this->element->getId(); ?>">
   <?php if (0 < strlen($this->element->getLabel())) : ?>
      <?php echo $this->formLabel($this->element->getName(), $this->element->getLabel());?>
   <?php endif; ?>
   <span class="value"><?php echo $this->{$this->element->helper}(
      $this->element->getName(),
      $this->element->getValue(),
      $this->element->getAttribs()
   ) ?></span>
   <?php if (0 < $this->element->getMessages()->length) : ?>
       <?php echo $this->formErrors($this->element->getMessages()); ?>
   <?php endif; ?>
   <?php if (0 < strlen($this->element->getDescription())) : ?>
      <span class="hint"><?php echo $this->element->getDescription(); ?></span>
   <?php endif; ?>
</div>
Run Code Online (Sandbox Code Playgroud)

尝试单独使用ViewScript会导致错误:

表单捕获的异常:找不到文件装饰器...无法呈现文件元素

看看这个FAQ揭示了我的部分问题,我更新了我的表单元素装饰器,如下所示:

'decorators' => array(
   array('File'),
   array('ViewScript', array('viewScript' => 'form/field.phtml'))
)
Run Code Online (Sandbox Code Playgroud)

现在它将文件元素渲染两次,一次在我的视图脚本中,以及在视图脚本之外使用文件元素的额外元素:

<input type="hidden" name="MAX_FILE_SIZE" value="8388608" id="MAX_FILE_SIZE" …
Run Code Online (Sandbox Code Playgroud)

zend-framework decorator zend-form zend-view zend-form-element

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

如何扩展Zend Navigation Menu View Helper?

我需要改变输出Zend_View_Helper_Navigation_Menu.我发现了我需要修改的两个函数,我知道如何进行我需要的更改.我不知道的是如何使Navigation对象使用我的视图助手而不是Zend.

代表我的类扩展的代码段:

// file /library/My/View/Helper/Navigation/Menu.php
class My_View_Helper_Navigation_Menu extends Zend_View_Helper_Navigation_Menu
{
    protected function _renderDeepestMenu(Zend_Navigation_Container $container,
                                          $ulClass,
                                          $indent,
                                          $minDepth,
                                          $maxDepth)
    {
        // modified code here
    }

    protected function _renderMenu(Zend_Navigation_Container $container,
                                   $ulClass,
                                   $indent,
                                   $minDepth,
                                   $maxDepth,
                                   $onlyActive)
    {
        // modified code here
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑澄清

我想更改<li>元素的类并删除EOL和缩进.使用菜单视图脚本没有选项可以做到这一点,这就是为什么我必须扩展它.

在我的Bootstrap中初始化导航对象:

$navTable = new Default_Model_Site_DbTable_Navigation();
$view = $this->getResource('view');
$view->navigation(new Zend_Navigation($navTable->getNavigation()));
Run Code Online (Sandbox Code Playgroud)

在我的布局中渲染菜单:

echo $this->navigation()->menu();
Run Code Online (Sandbox Code Playgroud)

我通过如下重命名来完成它的工作,但我不清楚为什么我不能重载/覆盖_Menu类和menu()函数.

  1. 将班级名称更改为 My_View_Helper_Navigation_MyMenu
  2. myMenu函数添加到类(return parent::menu($container);)
  3. echo $this->navigation()->myMenu();在布局中调用

类线框:

// …
Run Code Online (Sandbox Code Playgroud)

php zend-framework zend-view zend-navigation

10
推荐指数
1
解决办法
8526
查看次数

使用PHP解析.htaccess文件

我正在使用Zend Framework,我使用了.htaccess一些设置.我现在正在编写用于调度的命令行脚本(例如cron).命令行脚本不查看该.htaccess文件,因为它们不是由Apache提供的.我想解析.htaccess我的脚本来检索一些设置.以下是我特别感兴趣的专栏:

SetEnv APPLICATION_ENV development

php_value date.timezone America/New_York
Run Code Online (Sandbox Code Playgroud)

我注意到了PEAR File_HtAccess包,但它似乎只解决了.htaccess文件的身份验证部分.


解决方案:(由于Bamieater的信用)

echo 调试输出的语句,从工作代码中删除.

$htaccess = file(realpath(dirname(__FILE__)) . '/.htaccess');
echo '<pre>';
foreach ($htaccess as $line) {
    if (preg_match('/^\s*SetEnv\s+APPLICATION_ENV\s+(.*?)\s*$/', trim($line), $matches)) {
        defined('APPLICATION_ENV') || define('APPLICATION_ENV', $matches[1]);
        echo APPLICATION_ENV . PHP_EOL;
    } elseif (preg_match('/^\s*php_(?:admin_)?value\s+date\.timezone\s+(.*?)\s*$/', $line, $matches)) {
        date_default_timezone_set($matches[1]);
        echo date_default_timezone_get() . PHP_EOL;
    }
}
echo '</pre>';
Run Code Online (Sandbox Code Playgroud)

php .htaccess pear parsing zend-framework

10
推荐指数
1
解决办法
4360
查看次数

Zend ACL是否适合我的需求?

我的应用程序基于Zend Framework.我正在使用Zend_Auth身份验证,但我不确定是否Zend_Acl会对我有用,因为坦率地说,我看到的例子对我的需求来说太简单了或者让我困惑.

我正在考虑将我的应用程序中的元素作为资源,这些资源可以拥有权限.包含资源权限的角色是动态定义的,分配给用户.我将这些信息存储在规范化表格中.

  1. 用户有角色
  2. 角色可以有多个资源
  3. 资源可以具有多个权限

角色实际上只是资源权限的集合,没有层次结构.资源的一个例子是'Page'.每个人都可以查看页面,但经过身份验证的用户需要"添加","编辑"或"删除"权限才能对页面执行任何其他操作.

这与Zend ACL相匹配吗?我是否会以一种会给我带来问题的方式思考ACL?


我的解决方案

Typeonerror获得了荣誉,但这是我的具体解决方案.

我扩展了Zend_Acl以简化我的使用,因为我只加载当前用户的角色:

class My_Acl extends Zend_Acl
{
    protected $_role_id;

    public function setRole($role_id)
    {
        $this->_role_id = $role_id;
        return $this->addRole($role_id);
    }

    public function getRole()
    {
        return $this->_role_id;
    }

    public function deny($resource, $privilege)
    {
        return parent::deny($this->_role_id, $resource, $privilege);
    }

    public function allow($resource, $privilege)
    {
        return parent::allow($this->_role_id, $resource, $privilege);
    }

    public function isAllowed($resource, $privilege)
    {
        return parent::isAllowed($this->_role_id, $resource, $privilege);
    }
}
Run Code Online (Sandbox Code Playgroud)

要填充的ACL我执行一个查询返回resource,privilegerole_id列.该 …

php zend-framework zend-auth zend-acl

9
推荐指数
1
解决办法
2420
查看次数

Zend Framework,Sessions和HttpOnly

我想制作会话cookie HttpOnly.根据这篇文章,我将此添加到我的application.ini:

resources.session.cookie_httponly = true
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我在Firecookie中查看会话cookie时,它没有HttpOnly像我指定的那样标记.我错过了什么步骤?

替代文字

php session httponly zend-framework

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

JPG文件大小优化 - PHP,ImageMagick和Google的页面速度

我有照片库代码,可以进行图像重新调整大小和创建缩略图.我使用ImageMagick来做到这一点.我通过Google的Page Speed工具运行了一个图库页面,它显示重新调整大小的图像和缩略图都有大约10KB的数据(特别是JPEG文件).

我可以在脚本中添加什么来优化文件大小?


附加信息

我在调用函数时使用的imagick::FILTER_LANCZOS模糊设置过滤器.JPEG的质量设置为.0.9resizeImage()80

php jpeg exif imagemagick pagespeed

8
推荐指数
1
解决办法
6328
查看次数

SUM用于不同的行

给出以下表结构:

countries: id, name
regions: id, country_id, name, population
cities: id, region_id, name
Run Code Online (Sandbox Code Playgroud)

......而这个查询......

SELECT c.name AS country, COUNT(DISTINCT r.id) AS regions, COUNT(s.id) AS cities
FROM countries AS c
JOIN regions AS r ON r.country_id = c.id
JOIN cities AS s ON s.region_id = r.id
GROUP BY c.id
Run Code Online (Sandbox Code Playgroud)

我将如何添加SUM了的regions.population值来计算该国的人口?我需要在求和时仅使用每个区域的值一次,但是未分组的结果对于每个区域(该区域中的城市数量)具有多个行.

示例数据:

mysql> SELECT * FROM countries;
+----+-----------+
| id | name      |
+----+-----------+
|  1 | country 1 |
|  2 | country 2 |
+----+-----------+
2 …
Run Code Online (Sandbox Code Playgroud)

mysql sql select group-by sum

7
推荐指数
1
解决办法
1956
查看次数

从PHP的时区值生成iCalender VTIMEZONE组件

我正在为我的活动日历应用程序添加一项功能,以便为事件提供iCalendar(ics)文件下载.我想生成VTIMEZONEComponent,但我所拥有的只是PHP的Timezonedate_default_timezone_get().以下VTIMEZONE是Outlook生成的东部时间组件(美国和加拿大)的示例:

BEGIN:VTIMEZONE
TZID:Eastern Time (US & Canada)
BEGIN:STANDARD
DTSTART:16011104T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010311T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
END:VTIMEZONE
Run Code Online (Sandbox Code Playgroud)

这会像PHP的"America/New_York"时区一样,但是我如何自动生成呢?

php icalendar timezone

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