MVC voor Laravel
hoe kan ik onderstaande code in laravel gebruiken?
Ik bedoel dan wat moet er in de controler, en wat in de view en wat in de model.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("test.xlsx");
$objWorksheet = $objPHPExcel->getActiveSheet();
echo '<table>' . "\n";
foreach ($objWorksheet->getRowIterator() as $row) {
echo '<tr>' . "\n";
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
foreach ($cellIterator as $cell) {
echo '<td>' . $cell->getValue() . '</td>' . "\n";
}
echo '</tr>' . "\n";
}
echo '</table>' . "\n";
?>
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("test.xlsx");
$objWorksheet = $objPHPExcel->getActiveSheet();
echo '<table>' . "\n";
foreach ($objWorksheet->getRowIterator() as $row) {
echo '<tr>' . "\n";
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
foreach ($cellIterator as $cell) {
echo '<td>' . $cell->getValue() . '</td>' . "\n";
}
echo '</tr>' . "\n";
}
echo '</table>' . "\n";
?>
Oke, laten we het omdraaien. Vertel ons eens wat volgens jou de controller, model en view zijn.
Ik heb het volgende gedaan:
In de HomeController.php die ik gebruik voor de pagina heb ik het volgende gezet;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
class HomeController extends BaseController {
public function showWelcome()
{
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("/Users/hansjonker/Desktop/l4/public/data/sample.xlsx");
$objWorksheetLa = $objPHPExcel->getActiveSheet();
$rows = $objWorksheetLa->getRowIterator();
foreach ($rows as $row) {
$cells = $row->getCellIterator();
$cells->setIterateOnlyExistingCells(false);
foreach ($cells as $cell) {
$cell->getValue();
}
}
$data = array(
'objWorksheet' => $objWorksheetLa,
'rows' => $rows,
'cells' => $cells,
'value' => $cell
);
return View::make('hello', $data);
}
}
?>
class HomeController extends BaseController {
public function showWelcome()
{
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("/Users/hansjonker/Desktop/l4/public/data/sample.xlsx");
$objWorksheetLa = $objPHPExcel->getActiveSheet();
$rows = $objWorksheetLa->getRowIterator();
foreach ($rows as $row) {
$cells = $row->getCellIterator();
$cells->setIterateOnlyExistingCells(false);
foreach ($cells as $cell) {
$cell->getValue();
}
}
$data = array(
'objWorksheet' => $objWorksheetLa,
'rows' => $rows,
'cells' => $cells,
'value' => $cell
);
return View::make('hello', $data);
}
}
?>
en mijn view hello.blade.php ziet er als volgt uit:
Code (php)
maar dit geeft wel een tabel maar dan met de waarde van het eerste veld in elke cel.
Het aantal column kopt en ook het aantal rijen, alleen de inhoud klopt niet er staat overal het zelfde.
En ik weet ook niet of dit voldoet aan de regels.
Gewijzigd op 08/11/2013 19:50:23 door Hans Jonker
Inladen en gegevens ophalen van je excel sheet kan in een andere class. Zie het repository pattern, dit gaat dan in je models.
In principe hoort dit in een model thuis, maar dan moet je een model wel beschouwen als een pure gegevens lezer/schrijver, en ik denk dat een model in Laravel enkel gericht is op uitlezen van databases.
https://github.com/guiguidoc/laravel-phpexcel/blob/master/README.md
Volgens mij kan met een model net zoveel als met een ander mvc model.
Laravel legt het vaak uit met database interactie, maar je kan daar gewoon gebruik van maken zonder database.
Bart V B op 09/11/2013 08:36:04:
Misschien is het handiger om het wiel niet opnieuw uit te vinden?
https://github.com/guiguidoc/laravel-phpexcel/blob/master/README.md
Volgens mij kan met een model net zoveel als met een ander mvc model.
Laravel legt het vaak uit met database interactie, maar je kan daar gewoon gebruik van maken zonder database.
https://github.com/guiguidoc/laravel-phpexcel/blob/master/README.md
Volgens mij kan met een model net zoveel als met een ander mvc model.
Laravel legt het vaak uit met database interactie, maar je kan daar gewoon gebruik van maken zonder database.
Volgens mij is dit niet geschikt voor Laravel 4, of heb ik het mis?
Ger van Steenderen op 09/11/2013 08:14:13:
In principe hoort dit in een model thuis, maar dan moet je een model wel beschouwen als een pure gegevens lezer/schrijver, en ik denk dat een model in Laravel enkel gericht is op uitlezen van databases.
Het kan laravel geen reet schelen wat je model precies doet. Zolang je model de baseclasse "Eloquent" (Eloquent is de db-modelclass) niet gebruikt.