Help Авторизация
  

 
Еще не зарегистрированы?
Забыли пароль?
Добавить в избранное

Статьи

Sf
Symfony
Notation
Официальная документация
Notation
Плагины
Notation
Контроллеры
Notation
Базы данных
Php
PHP
Notation
Базы данных
Js
JavaScript
Notation
Разное
Notation
Prototype
Help Специалисты
Men Жариков Дмитрий
Help Консультации
Consult Весь список
Help Каталог работ
Web Специфичное
Web Брачные агенства
Web Каталоги продукции
Web Интернет-магазины
Web Бизнесс порталы
Web Сайты знакомств
Blognot_big   Блоги
Feed Название
Информация Описание
Npub Nblognot
Записей: 1
Последняя: 18 июля 2010 г.
Npub Nblognot
Записей: 1
Последняя: 19 июля 2010 г.
Npub Nblognot
Записей: 6
Последняя: 26 июля 2010 г.
Npub Nblognot
Записей: 6
Последняя: 21 августа 2010 г.

Приемы работы

FolderFolderPHP
Npub Nblognot
Записей: 2
Последняя: 23 июля 2010 г.

Приемы в PHP

Npub Nblognot
Записей: 2
Последняя: 23 августа 2010 г.

Работа с базой данных с помошью ORM Propel.

Npub Nblognot
Записей: 2
Последняя: 4 сентября 2008 г.
Комментариев: 5
Последний: 13 марта 2010 г.

Методы работы с мультиязычным приложением.

Npub Nblognot
Записей: 3
Последняя: 4 сентября 2008 г.

Техники конфигурирования.

Npub Nblognot
Записей: 2
Последняя: 5 сентября 2008 г.

Юзаем плагин.

Npub Nblognot
Записей: 13
Последняя: 29 июля 2010 г.

Записи по изучению логики работы фреймворка.
Все что накопилось в душе...

Npub Nblognot
Записей: 4
Последняя: 13 января 2009 г.

Приемы и примеры оформления внешнего вида шаблонов в symfony.

Npub Nblognot
Записей: 8
Последняя: 6 сентября 2008 г.
Комментариев: 17290
Последний: 6 июля 2010 г.

Описание процесса разработки этого сайта.
Сдесь буду писать о всех функциональных нововведениях и исправлениях.


Refresh

Найдено (13 результатов )

Поиск в заголовках
Folder  Логика symfony
Ncpanel Nedit Npub Delete
ставим и забираем cookie

в акшине

$this->getResponse()->setCookie('mycookie', $value);
$this->getResponse()->setCookie('mycookie', $value, $expire, $path, $domain, $secure);


$string = $this->getRequest()->getCookie('mycookie');

Comment_big 29 июля 2010 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Работа с датой с помощью плагина sfDateTimePlugin

Добавление к дате промежутка времени

$dt = new sfDate ( );
// $dt = new sfDate ( $sub->getDateExpire () );

$nd = $dt->addMonth ( $this->getRequestParameter ( 'month' ) );

$sub->setDateExpire ( $nd->dump () );

Comment_big 14 января 2009 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Работа с flash аттрибутами

Установка и получение аттрибута

$this->setFlash('attrib', $value);

$value = $this->getFlash('attrib');

Проверка в шаблоне

<?php if ($sf_flash->has('attrib')): ?>
  <?php echo $sf_flash->get('attrib') ?>
<?php endif; ?>

Comment_big 13 января 2009 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Как отключить debug панель из action
sfConfig::set('sf_web_debug',false);

Comment_big 13 января 2009 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Как возвратиться на исходную станицу при редактировании или удалении записей в админ модуле.

Я выкрутился следующим образом:
В generator.yml добавил свой шаблон

 edit:
   display: [content, _hide]   

В шаблоне _hide.php

<?php
  if(sfContext::getInstance()->getRequest()->getParameter('page'))
{
echo input_hidden_tag('page',sfContext:
:getInstance()->getRequest()->getParameter('page')).
sfContext::getInstance()->getRequest()->getParameter('page');
}
 else
{
echo input_hidden_tag('page',1).'1';
}
?>

Затем в шаблоне _list_td_actions.php добавил параметр page

 <li><?php 
    if(sfContext::getInstance()->getRequest()->getParameter('page'))
{
      echo link_to(image_tag('/sf/sf_admin/images/edit_icon.png',
      array('alt' => __('edit'), 'title' =>__('edit'))),
     'Coment/edit?id='.$coment->getId().'&page='.sfContext:
     :getInstance()->getRequest()->getParameter('page')); 
}
else
{
  echo link_to(image_tag('/sf/sf_admin/images/edit_icon.png',
      array('alt' => __('edit'), 'title' => __('edit'))),
      'Coment/edit?id='.$coment->getId()) ; 
}

  ?></li>
  <li>

  getRequest()->getParameter('page'))
    {
     echo link_to(image_tag('/sf/sf_admin/images/delete_icon.png', 
    array('alt' => __('delete'), 'title' => __('delete'))),
    'Coment/delete?id='.$coment->getId().'&page='.sfContext:
    :getInstance()->getRequest()->getParameter('page'), array (
  'post' => true,
  'confirm' => __('Are you sure?'),
)) ;
    }
    else
    {
     echo link_to(image_tag('/sf/sf_admin/images/delete_icon.png',
      array('alt' => __('delete'), 'title' => __('delete'))), 
      'Coment/delete?id='.$coment->getId(), array (
      'post' => true,
      'confirm' => __('Are you sure?'),
    )) ;
    }
    
    ?>
</li>

И наконец переписал actions

public function executeDelete()
  {
    ....
     if($this->getRequestParameter('page'))
     {
       return $this->redirect('Coment/list?page='.
       $this->getRequestParameter('page'));
     }
     else
     {
       return $this->redirect('Coment/list');
     }
    ....
   }

public function executeEdit()
  {
   ...
   if($this->getRequestParameter('page'))
     {
       return $this->redirect('Coment/list?page='.
       $this->getRequestParameter('page'));
     }
     else
     {
       return $this->redirect('Coment/list');
     }
   ...
  }

Comment_big 10 сентября 2008 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Upload файлов с помощью ajax (js)

Я создал модуль командой symfony init-module backend upload

В apps/backend/modules/upload/actions/action.class.php пишем такой код

class uploadActions extends sfActions
{
  /**
   * Executes index action
   *
   */
public function executeIndex()
{
 // Редирект на 404 если нет параметра claim_id

$this->forward404Unless($this->claim = 
 ClaimPeer::retrieveByPK($this->getRequest()->getParameter('claim_id')));

// Флаг для использования в шаблоне чтоб решить использовать js или нет

$this->isUploaded = false;

// Если пришли с POST

if($this->getRequest()->getMethod() == sfRequest::POST) {
  if($uploaded_file = $this->getRequest()->getFileName('uploaded_file')) {
    if(!empty($uploaded_file)) {
      // очищаем $uploaded_filename 
      $this->getRequest()->moveFile('uploaded_file', './uploads/'   . $this->claim->getClaimId() 
. '/' . $uploaded_file, 0664, true, 0775); 
      $this->uploaded_webpath = $this->claim->getClaimId() . '/' . $uploaded_file;
      $this->isUploaded = true;

      // вставляем запись в таблицу
      $claimdoc = new Claimdocs;
      $claimdoc->setClaimId($this->claim->getClaimId());
      $claimdoc->setFilename($uploaded_file);
      $claimdoc->save();
       }
     }
   }
 }
}

Затем пишем apps/backend/modules/upload/templates/indexSuccess

<?php
use_helper('Upload');

// If we have just uploaded a file then we just run javascript to update the <div>

// Если только что загрузили файл запускаем яваскрипт чтоб обновить див 

if($isUploaded == true) {
    ?>
    <html><head><script>
    var par = window.parent.document;
    var images = par.getElementById('images');
    var imgdiv = images.getElementsByTagName('div')[<?=(int)$_POST['imgnum']?>]; 
// не используем $_POST 
    var image = imgdiv.getElementsByTagName('img')[0];
    imgdiv.removeChild(image);
    var image_new = par.createElement('img');
    image_new.src = '<?=upload_path($uploaded_webpath)?>';
    image_new.className = 'loaded';
    imgdiv.appendChild(image_new);
    </script></head>
    </html>
    <?php
    exit();
}
?><html><head>
<script language="javascript">
function upload(){
    // hide old iframe
    var par = window.parent.document;
    var num = par.getElementsByTagName('iframe').length - 1;
    var iframe = par.getElementsByTagName('iframe')[num];
    iframe.className = 'hidden';

    // create new iframe
    /// Создаем новый фрейм
    var new_iframe = par.createElement('iframe');
    new_iframe.src = '<?=url_for('upload?claim_id='.$claim->getClaimId())?>';
    new_iframe.frameBorder = '0';
    par.getElementById('iframe').appendChild(new_iframe);


    // добавляем картинку индикатора
    var images = par.getElementById('images');
    var new_div = par.createElement('div');
    var new_img = par.createElement('img');
    new_img.src = '<?=image_path('indicator.gif')?>';
    new_img.className = 'load';
    new_div.appendChild(new_img);
    images.appendChild(new_div);

    // отсылаем
    var imgnum = images.getElementsByTagName('div').length - 1;
    document.iform.imgnum.value = imgnum;
    document.iform.submit();
}
</script>
<style>
#file {
    width: 350px;
}
</style>
<head><body><center>
<form name="iform" action="" method="post" enctype="multipart/form-data">
<input id="file" type="file" name="uploaded_file" onchange="upload()" />
<input type="hidden" name="imgnum" />
<input type="hidden" name="claim_id" value="<?=$claim->getClaimId()?>" />
</form>
</center></html>


Теперь мы можем включить этот модуль в другой модуль.
Например в apps/backend/modules/claim/actions/actions.class.php примерно так

public function executeStep2()
{
  // Make sure we have a valid claim_id
  $this->forward404Unless($this->claim = ClaimPeer::retrieveByPK(
$this->getRequest()->getParameter('claim_id')));

  $this->addStylesheet('upload.css');


  // Получаем звязанную запись
  $this->claimdocs = ClaimdocsPeer::getClaimdocs($this->claim->getClaimId());

  return sfView::SUCCESS;
}

Затем в шаблоне apps/backend/modules/claim/templates/step2Success.php

<?php
use_helper('Upload');
?>

<h1>File Upload</h1>

<div id="iframe">
<iframe src="<?=url_for('upload?claim_id='.$claim->getClaimId())?>" frameborder="0"></iframe>
</div>
<div id="images">
<?php foreach($claimdocs as $claimdoc): ?>
  <div><img src="<?=upload_path($claimdoc->getClaimId().'/'.$claimdoc->getFilename())?>"></div>
<?php endforeach ?>
</div>

Here's the 'Upload' helper you see referenced in my code. Put it in apps/backend/lib/helper/UploadHelper.php

Это upload хэлпер, его нужно положить в apps/backend/lib/helper/UploadHelper.php

<?php
use_helper('Asset');

function upload_path($source)
{
  return _compute_public_path($source, 'uploads', false);
}
?>

Comment_big 9 сентября 2008 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Аплоад (upload) файлов
if (!$this->getRequest()->hasErrors() && $this->getRequest()->getFileSize('file'))
{
  $currentFile = sfConfig::get('sf_upload_dir')."//".$ans->getFilePath();   
  $fileName = md5($this->getRequest()->getFileName('file').time().rand(0, 99999));
  $ext = $this->getRequest()->getFileExtension('file');
  if (is_file($currentFile))
  {
    unlink($currentFile);
  }
  $this->getRequest()->moveFile('file', sfConfig::get('sf_upload_dir')."//".$fileName.$ext);
  $ans->setFilePath($fileName.$ext);
}

Comment_big 5 сентября 2008 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Фильтр по связанному полю.

Как сделать фильтр в админ модуле по связанному полю.

Я так делаю:

в generator.yml

fields:  
  link_personage:  
    filter_criteria_disabled: true  
filters: [ _link_personage]  

_link_personage.php

<?php if ($type == 'filter'): ?>  
<?php echo input_tag('filters[pers]', isset($filters['pers']) ?
$filters['pers'] : null,
array ('size' => 15)) ?>
<?php else: ?>
<?php echo link_to($forum_message->getPersonage()->getName(),    
'pers/edit?id='.$forum_message->getPersonage()->getId()) ?>
<?php endif ?>

и в actions

protected function addFiltersCriteria($c)  
  {  
    parent::addFiltersCriteria($c);  
    if (isset($this->filters['pers_is_empty']))  
  {  
  $criterion = $c->getNewCriterion(PersonagePeer::NAME, '');  
  $criterion->addOr($c->getNewCriterion(PersonagePeer::NAME, null, Criteria::ISNULL));  
  $c->add($criterion);  
}  
else if (isset($this->filters['pers']) && $this->filters['pers']   !== '')
{    
  $c->add(PersonagePeer::NAME, strtr($this->filters['pers'], '*',   '%'), Criteria::LIKE);  
  $c->addJoin(TeamsPeer::ID, PersonagePeer::ID_TEAM, Criteria::LEFT_JOIN);
}  

}


Comment_big 2 сентября 2008 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Создаем и выводим сообщения о ошибках

В action модуле

$this->getRequest()->setError('name', 'Не заполнено имя');

в шаблоне

// проверяем есть ли ошибки
<?php if ($sf_request->hasErrors()): ?>  
  // пробегаем по всем ошибкам  
  <?php foreach ($sf_request->getErrorNames() as $name): ?>  
  <?php echo $sf_request->getError($name) ?>   
  <?php endforeach; ?>  
<?php endif; ?>  

Comment_big 2 сентября 2008 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Как узнать текущий action и модуль из шаблона

Это делается так:

$sf_params->get('action')
$sf_params->get('module');

или так

$sf_request->getParameter('action')
$sf_request->getParameter('module')

из action

$this->getRequest()->getParameter('action')
$this->getRequest()->getParameter('module')

Comment_big 2 сентября 2008 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Работа с флеш параметрами

Установка

$this->setFlash('attrib', $value);

получение

$this->getFlash('attrib');  

в шаблоне

<?php if ($sf_flash->has('attrib')): ?>   
<?php echo $sf_flash->get('attrib') ?>  
<?php endif; ?>  

Comment_big 2 сентября 2008 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Ajax хэлперы
<?php use_helper('Javascript') ?>

ссылка

<?php echo link_to_remote('Всегда', array(
'update' => 'type_pub'.$publication->getId(),
'url'    => 'Ajax/setstat?id='.$publication->getId().'&stat=1',
'loading'  => "Element.show('indicator')",
'complete' => "Element.hide('indicator');".visual_effect('highlight', 'type_pub'.$publication->getId()),

)) ?>

форма

<?php echo form_remote_tag(array(
'update'   => 'item_list',
'url'      => 'item/add',
)) ?>

индикатор

<div id="indicator" style="display: none">
<?php echo image_tag('/images/indicator.gif') ?>
</div> 

Comment_big 2 сентября 2008 г.
First Previous 1 2 Next Last