[Yii2] Scenariusze i bezpieczeństwo

Cześć!

Mam pytanie odnośnie scenariuszy, ponieważ nie wiem czy wszystko dobrze zrozumiałem.

Przykład uproszczony dla dwóch scenariuszy i prostego modelu, mam tabelę (id, nazwa, cena) i dwa formularze (dwie akcje kontrolera)

  • formularz umożliwiający podawanie tylko nazwy

  • formularz umożliwiający podawanie nazwy i ceny

i teraz kod


    public function rules()

    {

        return [

            [['nazwa', 'cena'], 'required'],

            [['title'], 'string', 'max' => 255],


        ];

    }

	

public function scenarios()

    {

        return [

            'dodaj1' => ['nazwa'],

            'dodaj2' => ['nazwa', 'cena]

        ];

    }

[list=1]

[*]Czy jest to odpowiednie podejście? Dobrze rozumiem, że podczas $model->load(…) zostaną przypisane tylko te atrybuty, które zostały podane w scenariuszu?

[*]Czy jest to bezpieczne? Chciałbym uniknąć sytuacji, że ktoś ręcznie zmodyfikuje formularz i np. w formularzu 1 podawa również cenę

[/list]

Wątek nie dawno

  1. Tak,

  2. Bezpieczne


public function scenarios()

    {

        return [

            'default' => ['nazwa', 'cena', 'title'],

            'dodaj1' => ['nazwa'],

            'dodaj2' => ['nazwa', 'cena]

        ];

    }