我对铁杆比较陌生.我有Devise设置,并希望在用户登录后运行一些回调代码.
查看Warden wiki页面,我可以使用"after_set_user"回调来执行此逻辑,例如:
Warden::Manager.after_set_user do |user, auth, opts|
unless user.active?
auth.logout
throw(:warden, :message => "User not active")
end
end
Run Code Online (Sandbox Code Playgroud)
但是,我不确定我应该在哪里存储这些东西.我的第一个想法是我可以把它放在config/initializers/devise.rb中.那是对的吗?在config目录中放置本质上是控制器代码的感觉并不合适.
所以HAML 4包含一个coffeescript过滤器,它允许我们爱好咖啡的人们做这样的整洁的事情:
- word = "Awesome."
:coffeescript
$ ->
alert "No semicolons! #{word}"
Run Code Online (Sandbox Code Playgroud)
我的问题:对于最终用户来说,这比使用等效:javascript
过滤器慢吗?使用coffeescript过滤器是否意味着coffeescript将在每次加载页面时编译为javascript(这显然会造成性能灾难),或者这只会在应用程序启动时发生一次?
我正在使用Twig PHP模板引擎.
是否有可用的运算符输出第一个非空值(合并)?
例如(使用PHP伪代码):
{{ title ?: "Default Title" }}
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做,但有点啰嗦:
{% if title %}{{ title }}{% else %}{{ "Default Title" }}{% endif %}
Run Code Online (Sandbox Code Playgroud) 我听说过这个问题很复杂.我知道当你坚持在模板中简单地启用PHP并解决问题时,这很容易.但是,它几乎总是会引入潜在的安全问题,并使您的模板混乱.
在使用PHP的大多数情况下,在PHP中编写一个简单的插件来实现您的需求会更加清晰.
我的问题是:在ExpressionEngine模板中使用PHP是否可以接受?或者这被认为是不好的做法?如果您是继承我编码的网站的开发人员,如果您在模板中看到PHP,您会感到畏缩吗?
我使用标准的搜索模块标签为ExpressionEngine网站添加了搜索功能.但是,我偶尔会遇到此错误消息:
您只能每15秒搜索一次.
这似乎只有在我退出时才会发生.
我希望减少搜索之间所需的时间.我该怎么调整呢?
我在这里使用omnipay设置:https://github.com/adrianmacneil/omnipay来处理paypal快速结账.
该过程工作正常,用户被重定向到paypal - >他们登录并选择支付 - >他们返回我的网站,此时我捕获付款.
我遇到的问题是我需要将他们输入Paypal的地址作为他们的账单/送货地址.
要将用户发送到paypal,我有以下内容:
$gateway = GatewayFactory::create('PayPal_Express');
$gateway->setUsername('XX-USERNAME_XX');
$gateway->setPassword('XX_PASSWORDXX');
$gateway->setSignature('XX_SIG_XX');
$gateway->setTestMode(true);
$response = $gateway->purchase(
array(
'cancelUrl'=>'http://www.XXX.co.uk/',
'returnUrl'=>'http://www.XXX.co.uk/paypalexpress_confirm',
'amount' => $totalamount,
'currency' => 'GBP'
)
)->send();
$response->redirect();
Run Code Online (Sandbox Code Playgroud)
当用户返回时,我有以下内容:
$gateway = GatewayFactory::create('PayPal_Express');
$gateway->setUsername('XX-USERNAME_XX');
$gateway->setPassword('XX_PASSWORDXX');
$gateway->setSignature('XX_SIG_XX');
$gateway->setTestMode(true);
$response = $gateway->completePurchase(
array(
'cancelUrl'=>'http://www.XXX.co.uk/',
'returnUrl'=>'http://www.XXX.co.uk/paypalexpress_confirm',
'amount' => $totalamount,
'currency' => 'GBP'
)
)->send();
echo $responsemsg=$response->getMessage();
echo '<br><br><br>';
$data = $response->getData();
print_r($data);
Run Code Online (Sandbox Code Playgroud)
响应消息或原始数据中的任何内容都不包含客户地址.
有没有人得到这个工作,因为我正在努力,这是完成交易的最后一步.
我有一个条件外的频道条目标签,应该确定一个频道是否有1.条目,2.过期条目,3.封闭条目:我试过{if channel_short_name == "news"}
但不知何故,无论条目是关闭还是过期,它都会返回包装内容.我有条件的原因是在频道标签之外是因为我不想重复h2标签.
{if there are a displayable entries in the "news" channel, display this whole package.}
<h2>News</h2>
<hr />
{exp:channel:entries channel="news" limit="2"}
<div class="entry panel">
<h3>{title}</h3>
{news_text}
{if news_full OR news_bild}
<div id="{entry_id}" class="toggleDiv">
{news_full}
{exp:ce_img:single src="{news_bild}" max_width="346" smart_scale="yes" alt="{name_orig}"}
</div>
<p><a class="show_hide" rel="#{entry_id}" href="#">Mehr…</a></p>
{/if}
</div>
{/exp:channel:entries}
{/if}
Run Code Online (Sandbox Code Playgroud)
这让我想到另一个问题:
是否可以将过期的条目设置为"已关闭"?
我正在尝试编写一个makefile来打包一些PHP脚本.我也想它来检查语法错误(使用内置的PHP皮棉工具)建立最终的zip文件之前,为了防止滑倒意外的错误.
到目前为止我有
all: dist
clean:
rm -f output.zip
dist: clean
for i in `find . -name "*.php"`; do php -l $$i; done
zip -r output.zip src -x "*/.*" "*/tests*"
Run Code Online (Sandbox Code Playgroud)
这是有效的,但如果有PHP错误我希望它打破并且不继续构建zip文件(出于显而易见的原因).目前,他们可能只是在成功的lint运行和zip文件的输出页面中丢失.
我是以正确的方式来做这件事的吗?我应该使用make循环而不是shell循环吗?如何让make中止shell命令错误?
我只是在学习 MYSQL 查询的来龙去脉,但我遇到了一个项目的障碍,我很感激一些帮助达成解决方案。
我有两个表,第一个包含对条目(entry_id)和相关修改(mod_id)的引用以及它所指的修改类别(mod_name)
表 1:exp_store_product_options
mod_id entry_id mod_name
3 2919 COLOR
4 2311 SIZE
5 2311 COLOR
6 3301 COLOR
Run Code Online (Sandbox Code Playgroud)
第二个表包含两个相关字段,mod_id 和 opt_name
表 2:exp_store_product_modifiers
mod_id opt_name
3 BLACK
4 EU 44
5 BROWN
6 BROWN
Run Code Online (Sandbox Code Playgroud)
我想要实现的是列出所有 DISTINCT opt_name 字段(通过 mod_id 上的连接)对应于我想作为一个整体传入的 entry_ids。
这是到目前为止我想出的代码,我相信除了要求我遍历每个条目 id 的查询之外,它还会做我需要的事情,并且在 DISTINCT 要求上失败,因为对于每次迭代,一切都是不同的. ({sale_products} 标签来自 ExpressionEngine,将在解析过程中循环,为我提供与此页面相关的 entry_id 结果列表
SELECT DISTINCT opt_name
FROM exp_store_product_options
INNER JOIN exp_store_product_modifiers
ON exp_store_product_options.product_mod_id=exp_store_product_modifiers.product_mod_id
{sale_products parse='inward'}entry_id = '{entry_id}' OR{/sale_products}
AND mod_name = 'SIZE'
Run Code Online (Sandbox Code Playgroud)
================================================== ==
以防万一其他人试图在 ExpressionEngine 的 expresso …
我正在使用ExpressionEngine创建联系表单,但是内置的联系表单不支持safecracker样式的内联错误消息.
是否有任何插件可以改进标准EE联系表单,添加内联错误处理或AJAX验证等?实施简单联系表格的最佳方式是什么?
由于这是一个简单的联系人电子邮件表单,我不需要表单插件的全部功能 - 只是一个很好的表单,我可以模板发送电子邮件.
在ExpressionEngine模板中访问HTTP主机名的最简单方法是什么(不需要在模板中使用PHP).
是否已经创建了一个插件来执行此操作,还是应该使用某种全局变量?
如果有一种方法可以访问ExpressionEngine模板中的其他HTTP服务器变量,则可以获得奖励积分.
我很惊讶我以前没碰过这个,或者至少我忘记了我是如何工作的.
我有一个标准的EE关系领域.在这种情况下,我有一个"产品"频道,每个产品属于"设计师"频道中的一个条目.
我显然想要一个页面列出单个设计师的所有产品.我的第一次尝试看起来像这样:
{exp:channel:entries channel="designers" url_title="{segment_3}" limit="1"}
{reverse_related_entries channel="products" limit="15"}
{snippet_product_grid}
{snippet_paginate}
{/reverse_related_entries}
{/exp:channel:entries}
Run Code Online (Sandbox Code Playgroud)
根据EE文档中的轶事证据,您无法对反向相关条目进行分页.那么解决方案是什么?有没有办法轻松获取所有产品条目ID,给定url_title
一个设计师?或者我是否必须使用SQL?
有什么方法可以使用Stash插件解决这个问题吗?
CartThrob文档的此页面上列出了coupon_code变量:http://cartthrob.com/docs/tags_detail/coupon_info/index.html#coupon_code
这个变量的确切数据来自何处?默认优惠券渠道上没有"优惠券代码"字段可以设置.
有任何想法吗?
cartthrob ×1
ci-merchant ×1
coalesce ×1
codeigniter ×1
coffeescript ×1
conditional ×1
devise ×1
e-commerce ×1
haml ×1
makefile ×1
mysql ×1
omnipay ×1
paypal ×1
php ×1
twig ×1
warden ×1