Symfony 1.3: Есть мнение об этом коде?Может быть короче или лучше? - PullRequest
0 голосов
/ 07 мая 2010

Мне нужно ваше мнение об этом коде ниже.

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

В частичном "_message" у меня есть это:

<div class="switching_link" id="switching_link_<?php echo $message ?>">

         echo include_partial('link_switch_state', array('message' =>
$message))

</div>

В частичном "_link_switch_state" у меня есть это:

if((int)$message->getState() == 1) {

            $string_state_message="non read";

} else {

            $string_state_message="read";

}

echo link_to_remote('Mark as '.$string_state_message, array(

                    'url' => 'message/switchState?id='.$message->getId(),

                     'update' => 'switching_link_'.$message,

                     "complete" => "switchClassMessage('$message');",

));

А в message / actions / actions.class.php у меня есть это:

public function executeSwitchState(sfWebRequest $request) {

         // searching the message we want to change its state.
         $this->messages =
Doctrine::getTable('Message')->findById($request->getParameter('id'));

         // changing the state of the message.
         if($this->messages[0]->getState() == 1) {

             $this->messages[0]->setState(0);
         }
         else {

             $this->messages[0]->setState(1);
         }

         $this->messages[0]->save();

         // rendering the partial that shows the link ("Mark as read/non
read").
         return $this->renderPartial('mensaje/link_switch_state', array(
'message' => $this->messages[0]));

     }

1 Ответ

0 голосов
/ 09 мая 2010

Мммм, не уверен, что вы можете написать его короче в Symonfy, но вы можете избавиться от операторов if-else (при условии, что state может быть 0 или 1):

В _message:

$string_state_message = ($message->getState()) ? "non read" : "read";

0 и "0" оценивается как false, любая другая непустая строка равна true.

В message/actions/actions.class.php:

$this->messages[0]->setState(!$this->messages[0]->getState());

Это опять-таки связано с тем, что 0 == false и 1 == true.

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