据我所知,当一个脚本在Magento之外运行时,在触发事件时不会调用观察者.为什么?我如何解决它?
以下是引导我提出这个问题的原始问题.问题是永远不会调用将应用目录规则的观察者.事件发生,但观察者不接受它.
我正在运行一个加载Magento会话的外部脚本.
在该脚本中,我正在加载产品并抓住一堆属性.一个问题是getFinalPrice()
不适用适用于产品的目录规则.
我正在做我知道的所有事情来设置会话,甚至一堆我觉得多余的东西.似乎没有应用这些规则.
这是一个测试脚本:
require_once "app/Mage.php";
umask(0);
$app = Mage::app("default");
$app->getTranslator()->init('frontend'); //Probably not needed
Mage::getSingleton('core/session', array('name'=>'frontend'));
$session = Mage::getSingleton("customer/session");
$session->start(); //Probably not needed
$session->loginById(122);
$product = Mage::getModel('catalog/product')->load(1429);
echo $product->getFinalPrice();
Run Code Online (Sandbox Code Playgroud)
任何见解都表示赞赏.
我试图让OAuth gem与Rails 3一起工作,我遇到了这个奇怪的问题......(独立于gem,我想我之前遇到过这个问题)
我有一个名为"OauthTestController"的控制器,以及一个名为"ConsumerToken"的模型.模型看起来像这样.
require 'oauth/models/consumers/token'
class ConsumerToken < ActiveRecord::Base
include Oauth::Models::Consumers::Token
end
Run Code Online (Sandbox Code Playgroud)
当我去"/ oauth_test/twitter"时,它会加载Oauth::Models::Consumers::Token
模块,我可以连接到twitter没问题.但是我第二次尝试它(只是刷新/oauth_test/twitter
网址),它给了我这个错误:
NameError (uninitialized constant Oauth):
app/models/consumer_token.rb:4
app/models/twitter_token.rb:2
app/controllers/oauth_test_controller.rb:66:in `load_consumer'
Run Code Online (Sandbox Code Playgroud)
这是为什么?它与加载路径或处于开发模式有关吗?
Sails.js(0.9v)控制器的策略定义为:
RabbitController:{
Run Code Online (Sandbox Code Playgroud)'*': false, nurture : 'isRabbitMother', feed : ['isNiceToAnimals', 'hasRabbitFood'] }
有没有办法将params传递给这些acls,例如:
RabbitController:{
Run Code Online (Sandbox Code Playgroud)'*': false, nurture : 'isRabbitMother(myparam)', feed : ['isNiceToAnimals(myparam1, myparam2)', 'hasRabbitFood(anotherParam)'] }
这可能会导致这些函数多次用于不同的参数.谢谢Arif
我有这样定义的app:
angular.module("myApp", [...])
.config(function ($stateProvider, $controllerProvider) {
if (isControllerDefined(controllerName)) {
do_stuff();
}
})
Run Code Online (Sandbox Code Playgroud)
控制器以这种方式定义:
angular.module("myApp")
.controller("myController", function ($scope) { ... });
Run Code Online (Sandbox Code Playgroud)
isControllerDefined()
如果我有控制器的名称,我如何定义(在上面的配置中)检查给定的控制器是否存在?我觉得我应该做一些像这样的事情:
var ctrl = angular.module("myApp").getController("myController");
var ctrl = $controllerProvider.get("myController");
Run Code Online (Sandbox Code Playgroud)
或类似的东西...但我找不到任何功能.救命?
如果我遗漏了任何东西,请告诉我.我无法弄清楚为什么我的views/references /文件夹无法访问.既不可用new.html.erb
也不index.html.erb
可用.当我转到localhost:3000/references
我的错误是:
RuntimeError in ReferencesController#index
Circular dependency detected while autoloading constant ReferencesController
Run Code Online (Sandbox Code Playgroud)
我相信这是设置,它不应该是一个Rails问题,因为我的其他控制器工作正常.
我的路线文件中有resources :references
我的rake路线产生:
references GET /references(.:format) references#index
POST /references(.:format) references#create
new_reference GET /references/new(.:format) references#new
edit_reference GET /references/:id/edit(.:format) references#edit
reference GET /references/:id(.:format) references#show
PATCH /references/:id(.:format) references#update
PUT /references/:id(.:format) references#update
DELETE /references/:id(.:format) references#destroy
Run Code Online (Sandbox Code Playgroud)
所以我试着通过这个到达我的索引页面,这应该是正确的路径.
<%= link_to 'References', references_path, class: 'navbar-brand' %>
Run Code Online (Sandbox Code Playgroud)
我的模特:
class Reference < ActiveRecord::Base
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
我的控制器:
class ReferencesControllers < ApplicationController
def index
@references = Reference.all
end
Run Code Online (Sandbox Code Playgroud)
谷歌搜索后,似乎每个类似的问题都是从Rails 3升级到Rails …
ruby ruby-on-rails circular-dependency controllers ruby-on-rails-4
我正在设计一个由MVC应用程序使用的Web服务(非常简单的东西),但我需要在Web服务中使用一个方法,该方法最多需要四个可选参数(即catId,brandId,lowestPrice和highestPrice).
如何编写Linq查询以使其基本上执行
databaseObject.Products.Where(p=> (p.Category == ANY if catId==null, else catId))
Run Code Online (Sandbox Code Playgroud)
我希望这是有道理的.
我正在使用Codeigniter.2.1.3进行网站,所以我需要扩展CI_Controller,这样我就可以添加一个方法来执行所有控制器,所以我做了user_guide中的内容:
在application/core文件夹中创建一个名为MY_Controller.php的文件,在其中创建MY_Controller类扩展CI_Controller,更改我的常规控制器以扩展MY_controller,如下所示:MY_controller.php:
class MY_Controller extends CI_Controller{
protected $page;
# Constructor
function __construct (){
parent::__construct();
#code shared with all controllers
}
public function get_page(){
#code to get_the right page here
}
}
Run Code Online (Sandbox Code Playgroud)
常规控制器名为Regular.php:
class Regular extends MY_Controller{
public function __construct(){
parent::__construct();
}
public function index(){
$this->get_page();
}
}
Run Code Online (Sandbox Code Playgroud)
但是出现以下错误:
致命错误:第2行的/var/www/immo/CodeIgniter_2.1.3/application/controllers/regular.php中找不到类'MY_Controller'
在Rails 3.2.11中,我有以下路由定义
resources :foos do
resources :bars
resources :bangs, :controller => 'foos/bangs'
end
Run Code Online (Sandbox Code Playgroud)
这导致以下路线
foo_bars GET /foos/:foo_id/bars(.:format) bars#index
POST /foos/:foo_id/bars(.:format) bars#create
new_foo_bar GET /foos/:foo_id/bars/new(.:format) bars#new
edit_foo_bar GET /foos/:foo_id/bars/:id/edit(.:format) bars#edit
foo_bar GET /foos/:foo_id/bars/:id(.:format) bars#show
PUT /foos/:foo_id/bars/:id(.:format) bars#update
DELETE /foos/:foo_id/bars/:id(.:format) bars#destroy
foo_bangs GET /foos/:foo_id/bangs(.:format) foos/bangs#index
POST /foos/:foo_id/bangs(.:format) foos/bangs#create
new_foo_bang GET /foos/:foo_id/bangs/new(.:format) foos/bangs#new
edit_foo_bang GET /foos/:foo_id/bangs/:id/edit(.:format) foos/bangs#edit
foo_bang GET /foos/:foo_id/bangs/:id(.:format) foos/bangs#show
PUT /foos/:foo_id/bangs/:id(.:format) foos/bangs#update
DELETE /foos/:foo_id/bangs/:id(.:format) foos/bangs#destroy
foos GET /foos(.:format) foos#index
POST /foos(.:format) foos#create
new_foo GET /foos/new(.:format) foos#new
edit_foo GET /foos/:id/edit(.:format) foos#edit
foo …
Run Code Online (Sandbox Code Playgroud) controllers rails-routing nested-resources ruby-on-rails-3.2
我正在使用以下内容handleCustomerSubscriptionDeleted
通过将以下内容置于以下方法来覆盖默认方法app/Http/Controllers/WebHookController.php
:
<?php namespace App\Http\Controllers;
use Laravel\Cashier\WebhookController;
use Symfony\Component\HttpFoundation\Response;
class StripeWebhooks extends WebhookController {
/**
* Handle stripe subscription webhook
*
* @param array $payload
* @return Response
*/
public function handleCustomerSubscriptionDeleted($payload)
{
$billable = $this->getBillable($payload['data']['object']['customer']);
if ($billable && $billable->subscribed()) {
$billable->subscription()->cancel();
}
return new Response('Webhook Handled', 200);
}
}
Run Code Online (Sandbox Code Playgroud)
为了实际覆盖默认值,我应该更新到扩展控制器的路由,还是仍然引用默认值?我不认为将它保留为默认值甚至会让Laravel知道我的控制器存在,但也想确认一下.
当前:
Route::post('stripe/webhook', '\Laravel\Cashier\WebhookController@handleWebhook');
Run Code Online (Sandbox Code Playgroud)
另一部分是handleCustomerSubscriptionDeleted
我也希望能够抓住当前正在引用的用户并执行其他操作; 在这种情况下,自动将记录设置为未发布.检索用户的最佳方法是什么?它似乎$payload['data']['object']['customer']
可能保留并与stripe_id
users表中的列相关,但是想要确认.谢谢你的帮助!
我相信(基于文档),它应该更像这样:
<?php namespace App\Http\Controllers;
use App\Models\Dashboard\Listing;
use App\User;
use Symfony\Component\HttpFoundation\Response;
use Laravel\Cashier\WebhookController as BaseController; …
Run Code Online (Sandbox Code Playgroud) 我想发现缺少BDD:包括ActiveRecord :: Base.find方法的参数.所以我的想法是在规范中有这样的东西:
ActiveRecord::Base.should_receive(:find).once.and_proxy_to_original_method
parent = SomeClass.find 34
parent.child.should be_loaded
parent.other_children.should be_loaded
Run Code Online (Sandbox Code Playgroud)
如果没有急切加载#child或#other_children关联,那么期望应该会失败,例如:"预期的ActiveRecord :: Base.find被调用一次但是它被调用了2次以下args:1. ...; 2. ......"
有谁知道是否有一些像这样工作的匹配器或如何制作它.
谢谢