123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- <?php namespace Laravel;
- class Messages {
- /**
- * All of the registered messages.
- *
- * @var array
- */
- public $messages;
- /**
- * Default format for message output.
- *
- * @var string
- */
- public $format = ':message';
- /**
- * Create a new Messages instance.
- *
- * @param array $messages
- * @return void
- */
- public function __construct($messages = array())
- {
- $this->messages = (array) $messages;
- }
- /**
- * Add a message to the collector.
- *
- * <code>
- * // Add a message for the e-mail attribute
- * $messages->add('email', 'The e-mail address is invalid.');
- * </code>
- *
- * @param string $key
- * @param string $message
- * @return void
- */
- public function add($key, $message)
- {
- if ($this->unique($key, $message)) $this->messages[$key][] = $message;
- }
- /**
- * Determine if a key and message combination already exists.
- *
- * @param string $key
- * @param string $message
- * @return bool
- */
- protected function unique($key, $message)
- {
- return ! isset($this->messages[$key]) or ! in_array($message, $this->messages[$key]);
- }
- /**
- * Determine if messages exist for a given key.
- *
- * <code>
- * // Is there a message for the e-mail attribute
- * return $messages->has('email');
- *
- * // Is there a message for the any attribute
- * echo $messages->has();
- * </code>
- *
- * @param string $key
- * @return bool
- */
- public function has($key = null)
- {
- return $this->first($key) !== '';
- }
- /**
- * Set the default message format for output.
- *
- * <code>
- * // Apply a new default format.
- * $messages->format('email', '<p>this is my :message</p>');
- * </code>
- *
- * @param string $format
- */
- public function format($format = ':message')
- {
- $this->format = $format;
- }
- /**
- * Get the first message from the container for a given key.
- *
- * <code>
- * // Echo the first message out of all messages.
- * echo $messages->first();
- *
- * // Echo the first message for the e-mail attribute
- * echo $messages->first('email');
- *
- * // Format the first message for the e-mail attribute
- * echo $messages->first('email', '<p>:message</p>');
- * </code>
- *
- * @param string $key
- * @param string $format
- * @return string
- */
- public function first($key = null, $format = null)
- {
- $format = ($format === null) ? $this->format : $format;
- $messages = is_null($key) ? $this->all($format) : $this->get($key, $format);
- return (count($messages) > 0) ? $messages[0] : '';
- }
- /**
- * Get all of the messages from the container for a given key.
- *
- * <code>
- * // Echo all of the messages for the e-mail attribute
- * echo $messages->get('email');
- *
- * // Format all of the messages for the e-mail attribute
- * echo $messages->get('email', '<p>:message</p>');
- * </code>
- *
- * @param string $key
- * @param string $format
- * @return array
- */
- public function get($key, $format = null)
- {
- $format = ($format === null) ? $this->format : $format;
- if (array_key_exists($key, $this->messages))
- {
- return $this->transform($this->messages[$key], $format);
- }
- return array();
- }
- /**
- * Get all of the messages for every key in the container.
- *
- * <code>
- * // Get all of the messages in the collector
- * $all = $messages->all();
- *
- * // Format all of the messages in the collector
- * $all = $messages->all('<p>:message</p>');
- * </code>
- *
- * @param string $format
- * @return array
- */
- public function all($format = null)
- {
- $format = ($format === null) ? $this->format : $format;
- $all = array();
- foreach ($this->messages as $messages)
- {
- $all = array_merge($all, $this->transform($messages, $format));
- }
- return $all;
- }
- /**
- * Format an array of messages.
- *
- * @param array $messages
- * @param string $format
- * @return array
- */
- protected function transform($messages, $format)
- {
- $messages = (array) $messages;
- foreach ($messages as $key => &$message)
- {
- $message = str_replace(':message', $message, $format);
- }
- return $messages;
- }
- }
|