小编Kim*_*nce的帖子

Zend Framework - 如何从动作帮助器中调用控制器的重定向()

我正在对Action Helper的preDispatch方法进行ACL检查.当它失败时,我想调用动作控制器的_redirect方法,但是我很难做到这一点.

在这篇文章附带的评论中,zend-framework从另一个动作助手中调用动作助手,我看到两个解决方案.在第一个中,控制器从助手访问为$ this - > _ actionController.在第二个中,使用$ this-> getActionController()访问它.

我尝试了以下两种方法:

$this->_actionController->_redirect('/');
$this->getActionController()->_redirect('/');
Run Code Online (Sandbox Code Playgroud)

在任何一种情况下,我得到'方法'_redirect'不存在......'.是否可以限制从动作帮助程序访问哪些控制器方法?

php zend-framework

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

使用PHPUnit和Zend Framework测试异常的问题

当用户在没有正确的post参数的情况下访问/ user/validate时,我的Zend应用程序抛出了一个zend异常.(我得到标准的"发生错误"消息,在我的布局中框住).这是故意的.

我现在正试图用PHPUnit来测试这种行为.这是我的测试:

/**
 * @expectedException Zend_Exception
 */
public function testEmptyUserValidationParametersCauseException() {
    $this->dispatch('/user/validate');
}
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,我收到一条消息,说它失败了,"预期异常Zend_Exception".有任何想法吗?

我在文件中有其他测试工作正常......

谢谢!

php phpunit zend-framework

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

如何保护 Laravel 模型属性

当使用其他框架或纯 PHP 时,我会保护我的模型属性。然后,我根据需要创建公共 getter 和 setter,并使用__get()和代理它们__set()。这有助于我晚上睡觉。

最近我开始使用 Laravel,我对 Eloquent 模型的“不受保护”程度感到惊讶。我知道我可以使用$guarded$fillable属性来控制批量分配,但这仍然为意外访问留下了很大的空间。

例如,我的模型有一个status属性。它在模型创建时设置了默认值,并且仅应在调用$model->activate()或时进行修改。$model->deactivate()但默认情况下,Laravel 允许开发者直接修改它。据我所知,防止这种情况的唯一方法是创建一个 setter,并在调用它时抛出异常。

我错过了什么吗?也许我只是需要放松一下?构建默认安全的 Eloquent 模型的最佳方法是什么?

laravel eloquent

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

Laravel:如何从刀片模板访问类常量

我在我的模型中使用了很多类常量。当我想在刀片中使用它们时,我首先在模板顶部导入它们。

例如:

@php
    use App\Model\Core\User;
@endphp
Run Code Online (Sandbox Code Playgroud)

稍后在模板中我使用它们,如下例所示。

<option value="@php echo User::MY_CONSTANT @endphp">This is an option</option>
Run Code Online (Sandbox Code Playgroud)

有没有更优雅的方法来解决这个问题?将 a 直接导入namespace由模板引擎管理的变量范围似乎有点粗糙。我IDE (phpstorm)肯定不喜欢它。

laravel blade

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

如何使用Zend获取有关此PDO MySql错误的更多信息

在我的PHP脚本中,我运行一个更新语句,如下所示:

$this->_db->update('names', $data, $this->_db->quoteInto('id = ?', $obj->id));
Run Code Online (Sandbox Code Playgroud)

db句柄是Zend_Db_Adapter_Abstract实例(PDO MySql种类).

问题是更新失败,我似乎无法获得有关错误的更多信息.

该错误发生在try/catch块中.当我发现错误时,我运行:

$db->getProfiler()->getLastQueryProfile();
Run Code Online (Sandbox Code Playgroud)

输出是:

2012-11-14T22:20:02+11:00 INFO (6): Zend_Db_Profiler_Query Object
(
    [_query:protected] => begin
    [_queryType:protected] => 64
    [_startedMicrotime:protected] => 1352892002.6064
    [_endedMicrotime:protected] => 1352892002.6066
    [_boundParams:protected] => Array
        (
        )
Run Code Online (Sandbox Code Playgroud)

我知道它说没有参数绑定,但我真的不认为是这种情况.我认为不知怎的'最后一次查询'不是我认为的那样.

其次,当我发现错误时,我也会运行:

$db->getConnection()->errorInfo();
Run Code Online (Sandbox Code Playgroud)

输出是:

2012-11-14T22:20:02+11:00 INFO (6): Array
(
    [0] => 00000
    [1] => 
    [2] => 
)
Run Code Online (Sandbox Code Playgroud)

显然这不是很有帮助.

有任何想法吗?如何获得有关错误的更多信息?

谢谢!

php mysql zend-db

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

Phpmyadmin和Apache 2.4 - 404错误

升级到Apache 2.4后有没有人遇到404错误和phpmyadmin?

我的ubuntu机器几天前运行升级,因此我无法访问localhost/phpmyadmin.我刚收到404错误.

我知道2.4中有安全性更改,但我检查了apache加载的phpmyadmin.conf中的设置,我看不到任何会影响非管理员用户的内容.此外,我评论了旧的安全规则,并添加了新的规则,但仍然没有工作......

apache2 phpmyadmin

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

Zend Registry for ZF2的替代品

我刚开始使用ZF2,我真的非常喜欢它.

令我困惑的一件事是没有注册表组件.我意识到服务管理器在大多数情况下使注册表过时.我非常依赖它而且很棒.

但有时我发现自己需要访问"全局"对象,而我无法访问服务管理器.例如,在我的Domain\User对象中,我需要访问Zend\Log.

我不希望在我的Domain对象中提供Service Manager,因为它们非常漂亮和原始,并且没有因这些考虑因素而受到影响.我可以在需要时"新建"一个日志实例,但是我经常这么做,我宁愿预先配置一个实例.我可以把它包装成单身,但这似乎是一个倒退的步骤.我可以创建自己的迷你注册表,但如果这是一个好主意,我相信Zend家伙会留下这样的组件.

那么,还有哪些其他选择?

编辑:

那么,我可以使用Zend DI吗?我看到这个问题部分涵盖了它,使用Zend\Di\Di配置类别名

php registry dependencies zend-framework zend-framework2

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

Vuex:什么时候使用 state 和 getter?

从 Vuex 检索数据时,在某些情况下,使用 getter 和直接访问状态之间的选择非常明确。例如:

  • 如果我正在检索一个简单的标量,例如count变量的值,那么直接访问状态似乎是有意义的
  • 但是,如果我要检索过滤后的项目列表,则 getter 是明确的选择。

但是对于其他只需要少量逻辑来检索值的情况呢?例如,如果foo我的商店的根目录中有一个对象,并且:

  • 我想检索一个值,例如 foo.option,但我不确定它是否存在。我通常会使用三元运算符来检查值是否存在,然后返回值或返回 null。
  • 我想检索 foo.date,但 date 是一个字符串,所以我希望将其转换为片刻。

使用mapState函数可以满足这些需求中的任何一个,但我应该使用它mapGetter吗?有什么不同?

vue.js vuex

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

VueJS Datepicker 不接受 dd/MM/yy

更新:

这是一个错误,我已将其作为问题在 github 上提出。老实说,该组件还没有真正准备好供主流使用。


vuejs-datepicker如果日期是 13 或更长,我将不接受 dd/mm/yy 格式。据推测,这是因为它将前两位数字解释为月份,因此拒绝任何大于 12 的数字。

日历弹出。您可以选择一个日期,它会显示在输入字段中。然而,一旦视野失去焦点,它就会被清除。

我尝试过使用静态字符串作为 的值format和函数。以下是功能版本。

HTML:

<div id="respond_by">
    <date-picker name="respond_by"></date-picker>
</div>
Run Code Online (Sandbox Code Playgroud)

页面底部的脚本:

<script>
    $(function () {
        new Vue({ el: "#respond_by" });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

我的单个文件组件:

<template>
    <vue-date-picker placeholder="dd/mm/yy"
                     input-class="form-control"
                     :name="name"
                     :format="customDateFormat"
                     monday-first
                     typeable></vue-date-picker>
</template>

<script>
    import moment from 'moment';
    import DatePicker from 'vuejs-datepicker';

    export default {
        props : [
            'name'
        ],
        components: {
            'vue-date-picker' : DatePicker
        },
        methods: {
            customDateFormat(date) {
                return moment(date).format('DD/MM/YY');
            }
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

全局注册组件:

import …
Run Code Online (Sandbox Code Playgroud)

vue.js vuejs-datepicker

5
推荐指数
0
解决办法
6640
查看次数

将 Laravel 的文件响应与 S3 文件结合使用

我正在使用 Laravel 5.6。该文档说我可以使用以下代码在用户浏览器中显示文件:

return response()->file($pathToFile);
Run Code Online (Sandbox Code Playgroud)

如何让它与非公开的 S3 文件一起使用?我已经尝试过以下方法:

return response()->file(Storage::disk('private')->path("my_directory/{$fileName}");
Run Code Online (Sandbox Code Playgroud)

但它会抛出“找不到文件”错误。

编辑:这是我的解决方法:

return response(Storage::disk('private')->get("my_directory/{$fileName}"), 200)
        ->header('Content-Type', 'application/pdf')
        ->header('Content-Disposition', 'inline');
Run Code Online (Sandbox Code Playgroud)

amazon-s3 laravel

5
推荐指数
0
解决办法
1106
查看次数