标签: controllers

Magento:我如何让观察者在外部脚本中工作?

据我所知,当一个脚本在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)

任何见解都表示赞赏.

events controllers magento areas

11
推荐指数
1
解决办法
4470
查看次数

第一次调用控制器,定义常量,第二次调用"未初始化的常量Oauth"?

我试图让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)

这是为什么?它与加载路径或处于开发模式有关吗?

module ruby-on-rails controllers uninitialized-constant

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

将参数传递给sails.js策略

Sails.js(0.9v)控制器的策略定义为:

RabbitController:{

    '*': false, 

    nurture    : 'isRabbitMother',

    feed : ['isNiceToAnimals', 'hasRabbitFood']
}
Run Code Online (Sandbox Code Playgroud)

有没有办法将params传递给这些acls,例如:

RabbitController:{

    '*': false, 

    nurture    : 'isRabbitMother(myparam)',

    feed : ['isNiceToAnimals(myparam1, myparam2)', 'hasRabbitFood(anotherParam)']
}
Run Code Online (Sandbox Code Playgroud)

这可能会导致这些函数多次用于不同的参数.谢谢Arif

parameters acl controllers policies sails.js

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

如何检查是否已定义angularjs控制器

我有这样定义的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)

或类似的东西...但我找不到任何功能.救命?

config controllers angularjs

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

Rails 4控制器中的运行时错误:自动加载常量时检测到循环依赖性

如果我遗漏了任何东西,请告诉我.我无法弄清楚为什么我的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

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

LINQ和可选参数

我正在设计一个由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)

我希望这是有道理的.

c# linq asp.net controllers

9
推荐指数
3
解决办法
8227
查看次数

找不到codeigniter MY_Controller

我正在使用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'

php codeigniter controllers extending-classes

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

获取Rails嵌套资源以路由以更正嵌套控制器

在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

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

Laravel Cashier Webhook:获取当前用户

我正在使用以下内容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_idusers表中的列相关,但是想要确认.谢谢你的帮助!

更新

我相信(基于文档),它应该更像这样:

<?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)

php controllers laravel laravel-5 laravel-cashier

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

使用RSpec期望方法调用和原始方法的代理

我想发现缺少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. ......"

有谁知道是否有一些像这样工作的匹配器或如何制作它.

谢谢

bdd rspec ruby-on-rails controllers

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