Я в основном форматирую URL-адреса перед отправкой своего объекта в представление для циклического прохождения (с foreach()
на $submissions
. У меня проблема в том, что parse_url() принимает один индекс, а не весь объект массива.
У меня есть этот метод в моем SubmissionsController:
public function newest() {
$submissions = $this->Submission->find('all', array(
'conditions' => array('Submission.approved' => '1'),
'order' => 'Submission.created DESC'
));
$this->set('submissions', $submissions);
$this->set('sourceShortUrl', AppController::shortSource($submissions));
}
В моем AppController у меня есть этот метод, который возвращает отформатированный URL-адрес:
protected function shortSource($source) {
return $sourceShortUrl = str_ireplace('www.', '', parse_url($source, PHP_URL_HOST));
}
Это работает для отдельных записей, но parse_url не может принимать массивы, поэтому есть ли в контроллере способ отправить индекс объекта? Например. $submissions['Submission']['source'] до того, как я просмотрю его в представлении?
Моей альтернативой было сделать что-то подобное в моем методе shortSource($source)
:
if (is_array($source)) {
for ($i = 0; $i < count($source); $i++) {
return $sourceShortUrl = str_ireplace('www.', '', parse_url($source[$i]['Submission']['source'], PHP_URL_HOST));
}
}
Но это просто возвращение первого (очевидно). Как лучше всего это сделать?