Symfony 2 setAttributes () вместо setEmail (), setPassword () и т. Д. - PullRequest
1 голос
/ 15 марта 2012

Я очень люблю Symfony 2. Я очень благодарен вам (команде Symfony) за такую ​​замечательную структуру. Но недавно я столкнулся с проблемой. На самом деле я перешел из Yii в Symfony 2. В Yii есть атрибут, а именно «атрибуты», который очень полезен. Потому что мне не нужно устанавливать все атрибуты для моей модели, как показано ниже:

Я просто делаю:

$account = new Account();
$account->attributes = $_POST['Account'];

вместо

$account = new Account();
$account->email = 'example@gmail.com';
$account->password = '1111111111';

Это очень полезно, потому что если я хочу добавить некоторые атрибуты к моей модели (Учетной записи) в будущем, мне не нужно искать места, где я должен добавить эти новые атрибуты.

Но в Symfony 2 я должен сделать так:

$account = new Account();
$account->setEmail('example@gmail.com');
$account->setPassword('1111111111');

Поэтому мой вопрос таков: «Есть ли в Symfony 2 функция, которая выполняет работу с« attribute 'в Yii? ».

Ответы [ 2 ]

1 голос
/ 15 марта 2012

Если вы действительно хотите имитировать такое поведение, вы всегда можете сделать что-то вроде этого:

class Account
{
    // ... snip ...

    /**
     * @param array $data
     * @return Account
     */
    public function fromArray(array $data = array())
    {
        foreach ($data as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (method_exists($this, $method)) {
                $this->{$method}($value);
            }
        }
        return $this;
    }
}
1 голос
/ 15 марта 2012

Создайте собственный класс хранилища для сущности примерно так:

// src/Acme/YourBundle/Repository/AccountRepository.php
namespace Acme\YourBundle\Repository;

use Doctrine\ORM\EntityRepository;

class AccountRepository extends EntityRepository
{
    public function SetAttributes($data)
    {
    //
    $account = new \YourBundle\Entity\Account();
    // your setters
    }
}

Дополнительная информация: пользовательские классы хранилища

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...