- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在学习 Catalyst 网络框架,我正在尝试了解 Catalyst 如何将 URL 分派(dispatch)给应用程序“操作”。
看来我可以用不明确的 URL 调度规则编写我的应用程序:
package Myapp::Controller::Root {
__PACKAGE__->config(namespace => '');
....
sub foo :Local {
my ( $self, $c ) = @_;
$c->response->body('foo action in Root controller.');
}
}
package Myapp::Controller::Foo {
....
sub default :Path {
my ( $self, $c ) = @_;
$c->response->body('default action in Foo controller.');
}
}
这两个 Action 在不同的包中定义,但都与“/foo/...”路径相关联。查看上面的代码,并不清楚哪个操作优先。该决定似乎或多或少是由 Catalyst 在应用程序启动时随机做出的。有时是前者的 Action ,有时是后者的 Action 。
请注意,上面的代码是一个人为的示例,我可能不会故意创建两个映射到同一路径的不同操作。尽管如此,我不知道如何仅通过查看代码来预测最终会调用哪个操作。
有没有办法指示 Catalyst 禁止这种歧义或至少提供警告?
最佳答案
我不确定是否有官方的 Catalyst 方法可以做到这一点,但您可以尝试以下方法,从 Catalyst question on how to list all actions in an app 中轻轻挖出
尝试在 __PACKAGE__->setup()
行之后的 App.pm
中添加如下内容:
# Start the application
__PACKAGE__->setup();
# Get all known actions and store the action name and source controller
my $controller_map = {};
my @controllers = map { __PACKAGE__->controller($_) } __PACKAGE__->controllers;
for my $controller ( @controllers ) {
my $controller_name = ref $controller;
my @actions = $controller->get_action_methods;
for my $action ( @actions ) {
my $name = $action->name;
next if $name =~ m|^_|; # _DISPATCH, _BEGIN, _AUTO, _ACTION, _END
next if $name eq 'auto';
next if $name eq 'begin';
next if $name eq 'index';
$controller_map->{ $name }->{ $controller_name }++;
}
}
# Show all action names that come from more than 1 controller
my $bad_action_names = 0;
for my $action ( sort keys %$controller_map ) {
my @original_controllers = keys %{ $controller_map->{ $action } };
if ( scalar @original_controllers > 1 ) {
$bad_action_names++;
print "Bad Action Names for '$action' : " . join(' ', @original_controllers) . "\n";
}
}
die "Unable to continue!!!" if $bad_action_names;
关于perl - 处理 Perl Catalyst 中不明确的 Controller 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39308628/
更新到 Xcode 12.2 后,由于与 Apple Silicon 相关的链接错误,我的项目开始无法编译。我似乎已经修复了大部分问题,但是一个构建静态链接框架的子项目给我带来了问题。然而,具有明显相
我想使用 UISceneSession 的委托(delegate)方法当用户将注意力从应用程序(窗口)移开,然后又回到应用程序(窗口)时,生命周期有助于通知我的 Mac Catalyst 应用程序。
Mac Catalyst 允许调整窗口大小,有没有办法为 Mac Catalyst 应用程序提供最小窗口大小? 最佳答案 只需将以下代码块添加到您的 application:didFinishLaun
如何在业务催化剂中编辑模板?我可以从用户界面执行此操作还是需要 Dreamweaver 或其他一些产品? 我用谷歌搜索,但找不到答案...... 当我登录时,在网站选项卡下,有站点编辑器、网页、博客和
我正在使用 Test::WWW::Mechanize::Catalyst 为基于 Perl Catalyst 的 Web 应用程序编写测试用例。我卡在某个地方,我想通过打印变量/哈希值来排除故障。但问
我现在正在开发 Businesss Catalyst Web App,但遇到了一个严重的问题。我需要混淆 Web 应用程序的电子邮件字段。不幸的是,没有简单的方法可以做到这一点,因为来自 Web 应用
目标是在 Mac Catalyst 上制作一个半透明的侧边栏。 下面的代码给出了一个不透明的侧边栏(图 1)。 在 Mac(不是催化剂)上,侧边栏看起来不错(图 2)。 Mac Catalyst 上是
我构建了一个允许人们上传图像的网络应用程序,该图像将显示在网络应用程序列表中。我需要将图像自动调整为更适合的大小,例如缩略图。 最佳答案 Adobe Business Catalyst 将解释 src
我通过使用以下方式在催化剂应用程序中使用上下文菜单 let interaction = UIContextMenuInteraction(delegate: self) editButton.addI
我正在开发 Catalyst/psgi一个可以充分利用异步流的应用程序,但是除了简单的计时器(如这里: http://www.catalystframework.org/calendar/2013/1
在我的阶段服务器中,我想激活调试,以便客户端可以在应用程序进入生产服务器之前自行发现错误。 但我只想要消息的第一部分,而不是请求或 session 数据。 例如:无法渲染模板“templates/ho
我注意到在结帐过程中,您无需成为成员(member)即可结帐。 我该如何防止这种情况发生?我需要任何购买的人都可以选择登录(如果他们有帐户)或在结帐过程中注册。 最佳答案 您可以使用 islogged
您好,我不想在 Controller 中重复相同的代码,所以我在 MyApp 主程序包中创建了一个子程序: sub do_stuff { my $input = shift; do s
在 Mac Catalyst 上,我的应用程序的文本字段 becomeFirstResponder() 功能不起作用。我尝试将这段代码放在 viewwillappear 中: override fun
我正在使用 Perl,我可以使用以下命令连接到本地 PostgreSQL 9.3 服务器这段代码 #!/usr/bin/perl use DBI; use strict; my $dbh = DBI-
这是我的第一个 Catalyst 应用程序,我不确定如何解决以下问题。 用户在表单中输入一些数据并选择一个文件(最大 100MB)进行上传。提交表单后,实际计算最多需要 5 分钟,结果存储在数据库中。
下面的代码是如何用 Perl 实现的? sub add_item : Local { my ( $self, $c ) = @_; my $item_id = $c->req->p
每次我构建 Catalyst 应用程序时,我都会遇到应用程序启动(重新)缓慢得令人痛苦的地步,延迟大约为 10 秒。今天我发现延迟是由以下几行引起的: use lib '/home/zoul/opt/
我希望以下代码 my @array; for my $rapport ( qw( value1 value2 value3 ) ) { push @array, { key => $rappo
我正在开发一个将在运行时生成数据库表的应用程序。我将 Catalyst 与 DBIC 一起使用,我需要在生成新表时生成新的 ResultSet。这个新的结果集必须作为催化剂模型添加,这样我才能$c->
我是一名优秀的程序员,十分优秀!