Citat:
Ursprungligen postat av Jonas
Håller med emilv, att lagra det i filer istället. Det blir en rejäl skillnad.
Om du är orolig för skrivrättigheter så testa tempname()*, vars funktion är att skapa en temporär fil.
|
Tar upp denna tråden igen
Har nu konstaterat att jag behöver både HTML och PDF. Bytte databasfältet till MEDIUMBLOB och den renderar HTML och PDF utefter denna data när man frågar efter sidan.
Känner att det är bättre om PDF-en lagras som fil. Dock osäker på hur jag skall lösa det.
Jag bygger en komponent i Joomla och det funkar som sagt bra. Jag kan välja att
visa "sidan" som html eller PDF och får då en rendering i valt format.
Har nu två frågeställningar:
1. Generera PDF
Joomla's inbyggda PDF-generator är funkar sådär, men jag har nu lyckats få en snygg PDF med den info jag behöver. Problemet här är att PDF-klassen inte har möjlighet att spara PDF:en. Bara göra en output. Skulle visserligen kuna köra ob_start och ob_get_clean och sedan spara det men det känns inte rätt...
2. Generera HTML
Som BjörnJ skriver så är det trevligt att kunna få upp en HTML-version av rapporten. Dock vet jag inte hur jag skall lagra detta. Skall jag generera HTML för just rapporten i sig, spara till en fil, och sedan när man begär sidan lägger den på "template", alltså sidhuvud, meny, sidfot osv.
Eller är det bättre att lagra rapport-datan i en fil och generera HTML efter den när man vill visa sidan?
3. MVC-problematiken 
Joomla kör ju en variant av MVC
Min controller anropas med action/task "makeReport" som då hämtar min ReportModel, vilken sammanställer data, lagrar rapport_id, datum osv. i databasen och slutligen skickar controllern besökaren vidare till en ny url där PDF eller HTML renderas.
Nu vet jag inte hur jag skall slå ihop detta rent MVC-mässigt eftersom jag skall både sammanställa data, skapa PDF, skapa HTML och spara dessa för att slutligen vidarebefordra användaren till HTML-versionens url.
Min tanke: (pseudo-kod)
Kod:
Controller
- Hämta ReportModel
- kör ReportModel->makeReport
ReportModel
- Hämta data och sammanställ den
- Lagra rapportinfo i db
- returnera rapport-ID till controller
Controller
- Hämta ReportViewPDF
- Peta in data från ReportModel
- ob_start
- Generera rapporten
- ob_get_clean
- Spara PDF:en
- Hämta ReportViewHTML
- Peta in data fårn ReportModel
- ob_start
- Generera rapporten
- ob_get_clean
- Spara HTML
- skicka användaren till "View"-skriptet med HTML-versionen
Känns som det blir mycket kod i controllern, men det känns fel att lägga den i ReportModel eftersom den anropar flera Views för att rendera.
Är detta rätt tänkt?