标签: observers

Laravel 在链接关系创建方法中静音观察者事件

我有一个关于如何根据我传递的参数使观察者的方法静音的问题。我有一个参数link_social,如果它设置为 false,我希望观察者不触发该created()函数。

       $role = $request->role == 'creator' ? 'creator' : 'sponsor';

        if($request->link_social == true){
            $user = Auth::user()->$role()->create([
                'name' => $request->safe()->name,
                'about' => $request->safe()->about,
                'account_plan_id' => $accountPlan->id,
            ]);
        } else{
            $user = Auth::user()->$role()->create([
                'name' => $request->safe()->name,
                'about' => $request->safe()->about,
                'account_plan_id' => $accountPlan->id,
            ])->saveQuietly();
        }
Run Code Online (Sandbox Code Playgroud)

User模型有一个关系方法creator,观察者来自该模型,名为CreatorObserver

但我得到了这个 "message": "Call to undefined method App\\Models\\Creator::saveQuitely()"

保存(编辑)时出错,但仍然会触发created()创建者观察者中的事件,该观察者正在将记录保存在另一个表中。

我正在尝试做类似的事情$user->role->create()->saveQuitely()

创造者观察者

class CreatorObserver
{
    /**
     * Handle the Creator "created" event.
     *
     * @param  \App\Models\Creator …
Run Code Online (Sandbox Code Playgroud)

php observers laravel laravel-9

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

magento无法加载观察类

当我尝试为checkout_type_onepage_save_order下面的事件编写观察者时

<events>
    <checkout_type_onepage_save_order>
        <observers>
            <Appeal_Consignor_Model_Observer>
                <type>singleton</type>
                <class>consignor/observer</class>
                <method>savedata</method>
            </Appeal_Consignor_Model_Observer>
        </observers>
    </checkout_type_onepage_save_order>
</events>
Run Code Online (Sandbox Code Playgroud)

以上代码我试过frontend以及global.

即使我也试过跟随.

<events>
    <checkout_type_onepage_save_order>
        <observers>
            <Appeal_Consignor_Model_Observer>
                <type>singleton</type>
                <class>Appeal_Consignor_Model_Observer</class>
                            <method>savedata</method>
            </Appeal_Consignor_Model_Observer>
        </observers>
    </checkout_type_onepage_save_order>
</events>
Run Code Online (Sandbox Code Playgroud)

完整的config.xml文件如下

<?xml version="1.0"?>
<config>
    <modules>
        <Appeal_Consignor>
            <version>1.0.1</version>
        </Appeal_Consignor>
    </modules>

    <global>
        <models>
            <consignor>
                <class>Appeal_Consignor_Model</class>
            </consignor>
        </models>
        <resources>
            <consignor_setup>
                <setup>
                    <module>Appeal_Consignor</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </consignor_setup>
            <consignor_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </consignor_write>
            <consignor_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </consignor_read>
        </resources>
        <helpers>
            <consignor>
                <class>Appeal_Consignor_Helper</class>
            </consignor>
        </helpers>
    </global>


    <frontend>
        <routers>
            <consignor>
                <use>standard</use>
                <args>
                    <module>Appeal_Consignor</module>
                    <frontName>consignor</frontName>
                </args> …
Run Code Online (Sandbox Code Playgroud)

events observers magento

0
推荐指数
1
解决办法
3351
查看次数

如何在添加到magento购物车之前更改价格?

如何在添加到购物车Magento时更改产品价格,示例:

假设我正在尝试添加1个价格10美元的产品,我想用10美元*5 = 50美元显示价格,当我添加2个产品时,我想要显示10美元*10 = 100美元.所以它的公共乘数是5.(x的倍数).

observers magento magento-1.9.1

0
推荐指数
1
解决办法
5596
查看次数

如何同时拥有观察者和init for ember js属性

新的余烬规则规定我们需要使用以下模式

propObserver: Ember.observer(function () {
   //code
})
Run Code Online (Sandbox Code Playgroud)

代替

propObserver: function() {
    //code
}.observers('someProp')
Run Code Online (Sandbox Code Playgroud)

在更新ember之前,我们可以执行以下操作

propObserver: function () {
    //code
}.observes('someProp').on('init')
Run Code Online (Sandbox Code Playgroud)

如何实现这种级联?

现在我知道我们可以单独做到这一点

propObserver: Ember.observer('someProp', function () {
   //code
})

propObserver: Ember.on('init', function () {
       //code
})
Run Code Online (Sandbox Code Playgroud)

javascript observers ember.js ember-cli

0
推荐指数
1
解决办法
275
查看次数

模型观察员,无法进行更新吗?

我在尝试让我的模型观察器工作时遇到麻烦。它正在按预期的方式进行创建和删除,但无法进行更新。我猜事件永远不会触发。问题是所有事情都以完全相同的方式进行。有任何想法吗?下面,我的观察者。

class GenericObserver extends AbstractObserver {

protected $events;

public function __construct(Dispatcher $dispatcher){
    $this->events = $dispatcher;

}

public function saved($model) {
    dd($this->events);

    $user_id = Auth::user()->usr_id;
    $user_nome = Auth::user()->usr_nome;
    $user_email = Auth::user()->usr_email;

    dd($model);
}

public function deleted($model) {
    $user_id = Auth::user()->usr_id;
    $user_nome = Auth::user()->usr_nome;
    $user_email = Auth::user()->usr_email;

    echo($model->getTable());
    dd($model->getKeyName());

}

public function updated($model) {


    $user_id = Auth::user()->usr_id;
    $user_nome = Auth::user()->usr_nome;
    $user_email = Auth::user()->usr_email;

    dd($model);

}

public function saving($model){
    echo 'Saving';
}

public function deleting($model){
    echo 'Deleting';
}

public function updating($model){
    echo 'Updating'; …
Run Code Online (Sandbox Code Playgroud)

php observers observer-pattern eloquent laravel-5

0
推荐指数
1
解决办法
4105
查看次数

Polymer 1.x:观察员

最终,我想从这个geochart中选择个别状态.但是这个问题仅限于让观察者被标记_computeData为响应于改变selected状态数组而被激活.

通过以下步骤重现问题:

  1. 打开这个jsBin.
  2. 清除控制台.
  3. 选择德克萨斯州.

请注意控制台显示:

您选择了:科罗拉多州,南达科他州,德克萨斯州

这是预期的这条线:

console.log('You selected: ' + this.selected); // Logs properly
Run Code Online (Sandbox Code Playgroud)

但是,我希望控制台也能读到:

按此行:

_computeData: function() {
  console.log('selected'); // Does not log properly; function not called?
  ...
Run Code Online (Sandbox Code Playgroud)

应该由以下一组观察员调用.

http://jsbin.com/wuqugigeha/1/edit?html,console,output
...
observers: [
  '_computeData(items.*, selected.*)',
  '_dataChanged(data.*)',
],
...
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?观察者为什么不调用该_computeData方法?在改变selected数组之后可以做些什么来使方法触发?

http://jsbin.com/wuqugigeha/1/edit?html,console,output
<!DOCTYPE html>

<head>
  <meta charset="utf-8">
  <base href="https://polygit.org/components/">
  <script src="webcomponentsjs/webcomponents-lite.min.js"></script>
  <link href="polymer/polymer.html" rel="import">
  <link href="google-chart/google-chart.html" rel="import"> </head>

<body>
  <dom-module id="x-element"> <template>
      <style>
        google-chart …
Run Code Online (Sandbox Code Playgroud)

javascript observers polymer polymer-1.0

0
推荐指数
1
解决办法
278
查看次数

Magento2:从观察者重定向

我们已经知道如何从观察者重定向到 magento 1.x版本。

但是对于magento 2,我们不知道如何从观察者那里强制执行重定向

我已经完成了google,但没有得到任何答案。

redirect observers magento2

0
推荐指数
1
解决办法
6215
查看次数

Laravel更新雄辩事件:旧数据与新数据相同

我创建了与之相关的News模型NewsObserver.我想对传递给updated/ on updating事件的模型传递新旧数据做一些逻辑,但传递模型的转储与原始属性具有相同的属性,除了'updated_at' 字段.我究竟做错了什么?

public function updating(News $item)
{
    dd($item);
}
Run Code Online (Sandbox Code Playgroud)

这是观察者所附的地方

use App\Observers\NewsObserver;
use App\Observers\FileObserver;

class AppServiceProvider extends ServiceProvider
{
/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    News::observe(NewsObserver::class);
    File::observe(FileObserver::class);
}
Run Code Online (Sandbox Code Playgroud)

这是我NewsObserver参加updating活动的一部分.dd$item只包含旧数据

namespace App\Observers;
use App\News;

class NewsObserver
{
/**
 * Listen to the News updated event.
 *
 * @param  \App\News $item
 * @return void
 */ …
Run Code Online (Sandbox Code Playgroud)

observers laravel

0
推荐指数
1
解决办法
6888
查看次数

如何检测 Swift 中的日期变化

我希望我的应用程序在另一天发生变化时起作用。

所以,在我的 appDelegate 中,我把

func applicationSignificantTimeChange(_ application: UIApplication){
        //this one fires
    }
Run Code Online (Sandbox Code Playgroud)

在应该更新其内容的 ViewController 中,我会这样做:

override func viewDidLoad() {
        NotificationCenter.default.addObserver(self, selector: #selector(self.dayChanged(notification:)), name: Notification.Name("significantTimeChangeNotification"), object: nil)

    }
Run Code Online (Sandbox Code Playgroud)

@objc func dayChanged(notification: NSNotification){
        //this one doesn't fire
    }
Run Code Online (Sandbox Code Playgroud)

不知何故,当 AppDelegate 中的 func 被调用时,观察者似乎对该事件视而不见。

这是语法,还是只是对机制的简单误解?

observers swift

0
推荐指数
1
解决办法
779
查看次数

在数组类型的 RxJS 主题上调用 .next() 不会通知观察者

我正在构建一个过滤器,您可以在其中按类别过滤,您可以通过单击类别名称旁边的复选框来选择一个类别。

所以我有一个filterComponent,它包含它自己的过滤器,然后是一个filterService,它有一个类别属性Subject<Array<ICategory>>,这个属性用于将数据传递到productsComponent我订阅类别属性的位置。

当我想使用此模式传递一个简单的字符串时,此逻辑有效,但当我想传递对象数组时,它似乎不起作用。

在我的 filters.component.html 文件中,当复选框值发生变化时,我正在调用一个方法:

<li *ngFor="let category of categories">
        <mat-checkbox (change)="addOrRemoveCategory(category)" [(ngModel)]="category.isChecked">
                {{'category.' + category.Name | translate}}
        </mat-checkbox>
</li>
Run Code Online (Sandbox Code Playgroud)

addOrRemoveCategory 方法实现如下所示:

private addOrRemoveCategory(category: ICategory): void {
    if (!this.chosenCategories.includes(category)) {
        this.add(category);
    } else {
        this.remove(category);
    }
    this.filterService.categories.next(this.chosenCategories);
}
Run Code Online (Sandbox Code Playgroud)

所以无论一个类别发生了什么,被添加或删除,(我在内部修改了selectedCategories数组,我用它的值调用 .next() ),我用更新的数组调用 .next() 。

问题是,当selectedCategories数组为空时,我推送到它,并用它调用 .next() 时,我正确地获取了订阅者函数中的值,但是如果再次执行此操作,并且我有一个2 个元素数组,我调用 .next(this.chosenCategories),我的订阅者方法没有收到通知。

但是,一旦我使用空数组调用 .next() ,我的订阅者方法就会再次收到通知(因为我已经删除了之前选择的所有类别)。

订阅者方法:

this.categoriesChangeSubscription = this.filterService.categories
            .pipe(
                debounceTime(500),
                distinctUntilChanged()
            )
            .subscribe((categories: Array<ICategory>) => { …
Run Code Online (Sandbox Code Playgroud)

subject observers rxjs subject-observer angular

0
推荐指数
1
解决办法
246
查看次数

RXJS 中的观察者和订阅者有什么区别?

RXJS 中的观察者和订阅者有什么区别?

请参阅下面的代码

// subscriber being used
const observable = new Observable(subscriber => {
  subscriber.next(1);
  subscriber.next(2);
})

// observer being used
const observable = new Observable(observer => {
  observer.next(1);
  observer.next(2);
})
Run Code Online (Sandbox Code Playgroud)

在上面的上下文中观察者和订阅者有什么区别?

observers subscriber observable rxjs

0
推荐指数
1
解决办法
238
查看次数