Таким образом, в CodeIgniter была отличная функция создания таблицы HTML, просто передав ей массив и обрабатывая заголовок и т. Д. Есть ли что-то там для Laravel, кто-нибудь мог использовать версию CI в Laravel? просто спрашивать
В Laravel
AFAIK ничего подобного нет, но вы можете создать свое собственное, что-то вроде (только идея) (класс php
, не только для Laravel
)
class Table { protected $table = null; protected $header = null; protected $attr = null; protected $data = null; public function __construct($data = null, $attr = null, $header = null) { if(is_null($data)) return; $this->data = $data; $this->attr = $attr; if(is_array($header)) { $this->header = $header; } else { if(count($this->data) && $this->is_assoc($this->data[0]) || is_object($this->data[0])) { $headerKeys = is_object($this->data[0]) ? array_keys((array)$this->data[0]) : array_keys($this->data[0]); $this->header = array(); foreach ($headerKeys as $value) { $this->header[] = $value; } } } return $this; } public function build() { $atts = ''; if(!is_null($this->attr)) { foreach ($this->attr as $key => $value) { $atts .= $key . ' = "' . $value . '" '; } } $table = '<table ' . $atts . ' >'; if(!is_null($this->header)) { $table .= '<thead><tr>'; foreach ($this->header as $value) { $table .= '<th>' . ucfirst($value) . '</th>'; } $table .= '</thead></tr>'; } $table .= '<tbody>'; foreach ($this->data as $value) { $table .= $this->createRow($value); } $table .= '</tbody>'; $table .= '</table>'; return $this->table = $table; } protected function createRow($array = null) { if(is_null($array)) return false; $row = '<tr>'; foreach ($array as $value) { $row .= '<td>' . $value . '</td>'; } $row .= '</tr>'; return $row; } protected function is_assoc($array){ return is_array($array) && array_diff_key($array, array_keys(array_keys($array))); } }
Теперь вы можете использовать его, как показано ниже ( пример здесь. )
$data = array( array('name' => 'Heera', 'age'=>'35', 'address' =>'Masimpur', 'phone'=>'123456'), array('name' => 'Usman', 'age'=>'28', 'address' =>'Kamal Gor', 'phone'=>'654321') ); $attr = array('class'=>'tbl someClass', 'id'=>'myTbl', 'style'=>'width:400px;color:red', 'border'=>'1'); $t = new Table($data, $attr); echo $t->build();
Или, установите заголовок, используя третий аргумент, например
$t = new Table($data, $attr, array('Known As', 'Years', 'Location', 'Contact'));
Это просто идея и может быть лучше. Теперь просто интегрируйте этот класс с Laravel
используя правило Laravel
. Вы можете расширить класс Html
или использовать его как отдельный класс, зарегистрировав его как услугу. Взгляните на этот ответ для расширения класса в laravel
.
Попробуйте nayjest / grids Laravel package.
Вы можете использовать скрипт drupal и преобразовать его в laravel: https://api.drupal.org/api/drupal/core%21includes%21theme.inc/function/theme_table/8
Сделав быстрый взгляд на это, вам просто нужно будет заменить несколько функций:
Это обеспечило бы очень хорошую реализацию того, что вы ищете.
EDIT: Я также просто столкнулся с этим: http://kohana.keyframesandcode.com/docs/modules/table/ Я не тестировал его, но здесь было указано: http://forumsarchive.laravel.io/viewtopic.php ? ID = 2178