noobie - помещает содержимое php-файла в файл контроллера - PullRequest
1 голос
/ 23 ноября 2011

У меня есть форма, которая имеет action="process.php". Внутри этого php-файла есть функция, за которой следует некоторый код, который вызывает функцию, например:

function uploadImage($fileName, $maxSize, $maxW, $fullPath) {
    // .... does stuff
}

$filename = strip_tags($_REQUEST['filename']);
$maxSize = strip_tags($_REQUEST['maxSize']);
$maxW = strip_tags($_REQUEST['maxW']);
$fullPath = strip_tags($_REQUEST['fullPath']);

if($filesize_image > 0){
    $upload_image = uploadImage($filename, $maxSize, $maxW, $fullPath);
}

Я хочу использовать этот код в приложении cakephp, которое требует от меня превращения вещей в кайф, превращая его в действия контроллера.

Я думал, что смогу разделить функцию на отдельное действие и создать другую функцию с другим кодом, который вызывает первую функцию, например:

function uploadImage($fileName, $maxSize, $maxW, $fullPath) {
    //.... does stuff
}

function calluploadImage() {
    $filename = strip_tags($_REQUEST['filename']);
    $maxSize = strip_tags($_REQUEST['maxSize']);
    $maxW = strip_tags($_REQUEST['maxW']);
    $fullPath = strip_tags($_REQUEST['fullPath']);
    if($filesize_image > 0){
    $upload_image = uploadImage($filename, $maxSize, $maxW, $fullPath);
    }
}

и затем выполните действие формы только action="calluploadImage", но это возвращает ошибку:

Неустранимая ошибка: вызов неопределенной функции uploadimage () в C: \ xampp \ htdocs \ cakephp \ app \ controllers \ campaigns_controller.php на линия 102

Может кто-нибудь мне помочь? :)

Ответы [ 3 ]

1 голос
/ 23 ноября 2011

Вы звоните uploadImage withour $this->

заменить

$upload_image = uploadImage($filename, $maxSize, $maxW, $fullPath);

до:

$upload_image = $this->uploadImage($filename, $maxSize, $maxW, $fullPath);
0 голосов
/ 23 ноября 2011

Я бы посоветовал хранить ваш запрос и бизнес-логику отдельно.

Как насчет действия upload_image в вашем контроллере Images , а затем перемещения функции uploadImage в модель Image ? Примерно так:

/**
 * Images Controller
 *
 */
class ImagesController extends AppController {

  public function upload_image() {

    /**
     * Handle request
     */
    $filename = strip_tags($_REQUEST['filename']);
    $maxSize = strip_tags($_REQUEST['maxSize']);
    $maxW = strip_tags($_REQUEST['maxW']);
    $fullPath = strip_tags($_REQUEST['fullPath']);

    /**
     * Only upload if image exists?
     */
    if ($filesize_image > 0) {
      // call uploadImage in Image model
      $upload_image = $this->Image->uploadImage($filename, $maxSize, $maxW, $fullPath);
    }

  }
}

/**
 * Image Model
 *
 */
class Image extends AppModel {

  function uploadImage($fileName, $maxSize, $maxW, $fullPath) {
      // .... does stuff
      return $result;
  }
}

После этого вы получите доступ к форме загрузки по адресу / images / image_upoad

0 голосов
/ 23 ноября 2011

Вы должны вызывать эту функцию, используя $this

следующим образом

$this->uploadImage($filename, $maxSize, $maxW, $fullPath);

Обратите внимание, что функция определена в классе, и вы вызываете ее в другом методе класса,Таким образом, вы должны использовать $this в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...