The first argument of any action method is the request object, called sfWebRequest
in symfony. You're already familiar with the getParameter('myparam')
method, used to retrieve the value of a request parameter by its name. Table 6-1 lists the most useful sfWebRequest
methods.
Table 6-1 - Methods of the sfWebRequest
Object
Name | Function | Sample Output |
---|---|---|
Request Information | ||
isMethod($method) |
Is it a post or a get? | true or false |
getMethod() |
Request method name | 'POST' |
getHttpHeader('Server') |
Value of a given HTTP header | 'Apache/2.0.59 (Unix) DAV/2 PHP/5.1.6' |
getCookie('foo') |
Value of a named cookie | 'bar' |
isXmlHttpRequest() * |
Is it an Ajax request? | true |
isSecure() |
Is it an SSL request? | true |
Request Parameters | ||
hasParameter('foo') |
Is a parameter present in the request? | true |
getParameter('foo') |
Value of a named parameter | 'bar' |
getParameterHolder()->getAll() |
Array of all request parameters | |
URI-Related Information | ||
getUri() |
Full URI | 'http://localhost/frontend_dev.php/mymodule/myaction' |
getPathInfo() |
Path info | '/mymodule/myaction' |
getReferer() ** |
Referrer | 'http://localhost/frontend_dev.php/' |
getHost() |
Host name | 'localhost' |
getScriptName() |
Front controller path and name | 'frontend_dev.php' |
Client Browser Information | ||
getLanguages() |
Array of accepted languages | Array( [0] => fr [1] => fr_FR [2] => en_US [3] => en ) |
getCharsets() |
Array of accepted charsets | Array( [0] => ISO-8859-1 [1] => UTF-8 [2] => * ) |
getAcceptableContentTypes() |
Array of accepted content types | Array( [0] => text/xml [1] => text/html |
- Works with prototype, Prototype, Mootools, and jQuery
** Sometimes blocked by proxies
For multipart requests to which users attach files, the sfWebRequest
object provides a means to access and move these files, as shown in Listing 6-14. These methods are deprecated in symfony 1.1 (see the form framework and the sfValidatorFile
class for more information).
Listing 6-14 - The sfWebRequest
Object Knows How to Handle Attached Files
class mymoduleActions extends sfActions
{
public function executeUpload($request)
{
if ($request->hasFiles())
{
foreach ($request->getFileNames() as $uploadedFile)
{
$fileName = $request->getFileName($uploadedFile);
$fileSize = $request->getFileSize($uploadedFile);
$fileType = $request->getFileType($uploadedFile);
$fileError = $request->hasFileError($uploadedFile);
$uploadDir = sfConfig::get('sf_upload_dir');
$request->moveFile($uploadedFile, $uploadDir.'/'.$fileName);
}
}
}
}
You don't have to worry about whether your server supports the $_SERVER
or the $_ENV
variables, or about default values or server-compatibility issues — the sfWebRequest
methods do it all for you. Besides, their names are so evident that you will no longer need to browse the PHP documentation to find out how to get information from the request.
Note The code above uses the $fileName
as it was when the file was uploaded. As there is a small chance that this gets exploited by sending files with malicious file names, you always should normalize the target filename or generate it.