March 11, 09 by Gabi Solomon
After coming across Matthew Turland Minify Filter for Zend Framework i decided to implement the minify app to also minify the css and javascript external files.
But i only did the implementation for the stylesheets for now, and i wanted to share it
.
Read the rest of this entry »
by Gabi Solomon
After tinkering with my VPS settings to optimize it ( it was having some low memory problems ) and after restarting the server, just when i tought everything was ok i noticed that i managed to break some websites.
they all got this error:
mysql error : Incorrect information in file: ./table.frm
After a bit of googling i found the problem … apparently it could be because there is no support for InnoDB … oops. In my quest for optimization i disabled the support for InnoDB tables thinking that there werent any InnoDB tables in the websites hosted on that VPS .. apparently they were
.
Hope you get here faster then i found the solution.
Cheers
March 05, 09 by Gabi Solomon
All of the applications this days will involve a database to store data and most of them will also have a user system. This means that beside building a login/register page you also need a method to store the data of the logged-in user while they are logged in.
Normally in php driven websites you will have that data storred in sessions, but in Zend Framework its easyer to use Zend_Auth to help you manage that part for you. The way i implemented my login is that i save the the user model in Zend_Auth storage, this helps me by having acces to the models methods like isAdmin for example.
Read the rest of this entry »
March 04, 09 by Gabi Solomon
Recently i tried to integrate the well known swfupload script into a website.
If you are here you must probably know that normally the flash request looses session since it doesn’t send cookie headers. The recommended workaround is to send the sessionid as a parameter through post, and in the action page set the session_id() to the post variable before the session start.
I did this but for some reason, my zend application refused to accept the new session_id. I struggled with it for quite a few hours, and finally narrowed it down to a php problem since the session_id would get set properly but after session start the session would be empty.
Really hitting a dead end i headed to stackoverflow ( really thankful for the guys that made this site possible ) and tried my luck there and wrote a question. And i got my answer
Seemed like the problem was with the php extension Suhosin witch has a session protection to prevent session stealing. A very useful thing but in this case it made me spend quite a few hours puzzled and staring at the monitor.
Hope you this is also your problem,
Cheers
February 27, 09 by Gabi Solomon
After starting working with zend framework i found all sorts of examples of bootstrap files, but a lot of them seem pretty messy to me since all the calls to zend components were basically thrown in there.
So after a lot of looking around i came up with a bootstrap files that is more to my liking. I found the initial class on a blog post when i was looking around but i don’t remember where, so sorry for not giving it the credit.
Read the rest of this entry »
February 08, 09 by Gabi Solomon
this post is more of a personal best practice and thought to share it with you guys. I like to do things this way, and think this is the best aproach, but i might be wrong and i would like your feedback on this
.
So in Zend Framework first of all you are recommended to always use the routers assemble method to generate the Urls. Wich is very good since you will then have an easy way of updating an URL, for example when the SEO guy tells you to switch 2 url params around.
The problem is where you place your call to the router ?
One way to go about it is to place it in the controller, or in the view. But i think that is not the best ideea since this would mean in case you would want to change the route, the name for example, you would need to change it in all the places you made it.
A second choice would be to have the router call in a function somewhere that you would call from everywhere you would want the URL generated. But that seems to me like an extra layer.
My approch.
Almost all the time that URL is related to a model. For example if u have an article model. then you could make a method buildUrl :
PHP:
-
public function buildUrl()
-
{
-
$router = Zend_Controller_Front::getInstance()->getRouter();
-
-
$url = $router->assemble(
-
-
'article_id' => $this->id,
-
),
-
'article_page');
-
return $url;
-
}
and then in your controllers and views you would just do:
which looks nicer and you are keeping the call to the router in one place.
Thats about it, i know this might look like pretty simple stuff for most of you, but i hope some will find this useful.
Cheers
January 29, 09 by Gabi Solomon
If you started working with Zend Framework you have notice that it is a bit slower then your regular php application.
This is due more or less to the double sword of having such a big framework to work with.
There are a lot of tips and tutorial out there on how to optimize your Zend Framework, and in all of them you will see the recommendation to remove the require_once from the library and to use Zend_Loader. Wich is a good advice since all those require_onces do put some stress on your application.
But after a bit of testing i camed to the conclusion that Zend_Loader isn't so fast. So i decided to go revert to a simple solution: writing my own autoloader.
I just put this small function at the top of my zend bootstrap file.
PHP:
-
function __autoload($class) {
-
-
}
And because i wrote all my application using Zend / Pear naming standard it works pretty good.
Hope you find this useful.
Cheers
January 20, 09 by Gabi Solomon
As i wrote in a previous post there are more ways to design a database for a multilanguage website, but the one i decided to go with is Coupled Translation table approach, where basicly for each table you have another one where you store a row for each language wich has the primary table id, language id and the other columns that need to be translated.
The Requirements and Implementation
Having this idea in mind i wrote a new class that extends Zend_Db_Table to provide an easy access to the translated tables. Basically the class a couple of things:
Read the rest of this entry »
January 18, 09 by Gabi Solomon
Important
Ignore this solution, there is already a solution in ZF implemented in View as Jani Hartikainen pointed out in the comment below.
Its $this->render('...');
Zend Framework has a view helper called partial that you can use to render other views in your view file.
This is very useful for reusing the html code.
The problem i sometimes faced with that partial helper is that it resets all the variables and you need to specify them as an array parameter if you want them to be available in the partial view rendered.
The solution
To overcome this all you need to do is make a new view helper ... i called mine GSD_View_Helper_Render witch extends the Zend_View_Helper_Partial and overwrites the methods that clones the view and resets the variables.
PHP:
-
class GSD_View_Helper_Render extends Zend_View_Helper_Partial {
-
-
public function cloneView()
-
{
-
$view = clone $this->view;
-
// $view->clearVars(); ... this was the line that resets all the variables.
-
return $view;
-
}
-
}
Thats it. Hope this is of help to you.
Cheers
January 03, 09 by Gabi Solomon
If you ever had to build a site in a language that had special characters or a multilanguage website, then you have had problems with UTF encoding for sure.
Well recently a new class was published on phpclasses.org by Rubens Takiguti Ribeiro called Unicode Manipulation that will solve your problems.
The class is a complete solution to manipulate Unicode encoded text with support for UTF-16 and UTF-32 besides UTF-8.
This class can be used to manipulate text with Unicode encodings.
It can perform several types of operations that involve text strings encoded as UTF-8, UTF-16 or UTF-32, like:
- Get the text sequence for byte order mark for little and big endian
- Convert a given character code to Unicode encoded text and vice-versa
- Get the byte length of a given Unicode encoded character
- Convert text encoding between UTF-8, UTF-16 and UTF-32
- Get a part of an Unicode encoded string from a given position and an optional length
- Get the string length of an Unicode encoded text
- Determine whether a given string has Unicode encoded text
[Class Page]
Hope you find it usefull,
Cheers.