Symfony 筆記 (4): sfActions
Posted in Symfony | By tarotoast | Tags: code, note, php, symfony, upload
看到這段 Code 的時候真是有種喔原來有這些喔的感覺,趕快記錄下來。這些都是在 Action 裡面可以用的 method,重點是沒有查 API 誰會知道有這些可以用。[sfActions API]
class mymoduleActions extends sfActions
{
public function executeIndex()
{
// Retrieving request parameters
$password = $this->getRequestParameter('password');
// Retrieving controller information
$moduleName = $this->getModuleName();
$actionName = $this->getActionName();
// Retrieving framework core objects
$request = $this->getRequest();
$userSession = $this->getUser(); // 這個最不像
$response = $this->getResponse();
$controller = $this->getController();
$context = $this->getContext();
// Setting action variables to pass information to the template
$this->setVar('foo', 'bar');
$this->foo = 'bar'; // Shorter version
}
}
以上的 $this 如果在 Template 裡面要呼叫的話,記得使用 $sf_context 這個物件。
sfActions 的不同用法:
class mymoduleActions extends sfActions
{
public function preExecute()
{
// The code inserted here is executed at the beginning of each action call
...
}
public function executeIndex()
{
...
}
public function executeList()
{
...
$this->myCustomMethod(); // Methods of the action class are accessible
}
public function postExecute()
{
// The code inserted here is executed at the end of each action call
...
}
protected function myCustomMethod()
{
// You can also add your own methods, as long as they don't start with "execute"
// In that case, it's better to declare them as protected or private
...
}
}
File Upload 在 Symfony 下面非常簡單就解決,想想看如果指有用 php 寫處理個檔案上傳要寫幾行?
class mymoduleActions extends sfActions
{
public function executeUpload()
{
if ($this->getRequest()->hasFiles())
{
foreach ($this->getRequest()->getFileNames() as $fileName)
{
$fileSize = $this->getRequest()->getFileSize($fileName);
$fileType = $this->getRequest()->getFileType($fileName);
$fileError = $this->getRequest()->hasFileError($fileName);
$uploadDir = sfConfig::get('sf_upload_dir');
$this->getRequest()->moveFile('file', $uploadDir.'/'.$fileName);
}
}
}
}
Recent Comments