noobie - 将php文件的内容放入控制器文件中

时间:2011-11-23 17:19:53

标签: php cakephp

我有一张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 on   第102行

有人可以帮帮我吗? :)

3 个答案:

答案 0 :(得分:1)

您正在调用不带$this->

的上传图片

替换

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

为:

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

答案 1 :(得分:0)

您应该使用$this

来调用此函数 像这样

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

请注意,该函数在类中定义,并且您在该类的另一个方法中调用它。因此,在这种情况下,您必须使用$this

答案 2 :(得分:0)

我建议保留您的要求&业务逻辑分离。

如何在图片控制器中执行 upload_image 操作,然后将 uploadImage 功能移至图片模型?像这样:

/**
 * 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

访问您的上传表单