หน้า 1 จากทั้งหมด 1

Q - วิธีการแก้ไข้ปัญหาการเรียกใช้งาน function render() ในการทำ extention บน phpbb

โพสต์แล้ว: 09/10/2018 11:05 am
โดย Ittichai_chupol
ตอนนี้ กำลังหัดเขียน extention อยู่ แต่ติดปัญหา ในการ เรียกใช้ function render() เพื่อที่จะเรียก หน้า ไฟล์ html มาแสดงผลล
ซึ่งเมื่อเรียกใข้งาน function render() ก็พบว่ามี error เกิดขึ้นระบุว่า สมาชิกทีส่งเป็นค่าว่าง ดังภาพ

รูปภาพ


Fatal error: Call to a member function render() on null in /opt/lampp/htdocs/phpb3/ext/mindphp/sample1/controller/main.php on line 26


จึงอยากทราบว่า จะต้องแก้ไข้ ตรวจสอบ หรือเพิ่มเติม ที่ส่วนไหนบ้าง




อันนี้คือโคด main.php ซึ่งเป็นส่วนที่เกิด error เป็นไฟล์ ที่ได้มีการรระบุ function render() ลงไป

โค้ด: เลือกทั้งหมด


<?php
namespace mindphp\sample1\controller;
class main {

    protected $config;
    protected $template;
    protected $user;
    protected $helper;
    protected $root_path;
    protected $php_ext;

    public function _construct(\phpbb\config\config $config, \phpbb\template\template $template, \phpbb\user $user, \phpbb\controller\helper $helper, $root_path, $php_ext) {

        $this->config = $config;
        $this->template = $template;
        $this->user = $user;
        $this->helper = $helper;
        $this->root_path = $root_path;
        $this->php_ext = $php_ext;
    }

    function base($page = 1) {

        return $this->helper ->render('sample1.html');
    }

}


Re: Q - แก้แก้ไข้ ปัญหาการเรียกใช้งาน function render() ในการทำ extention บน phpbb

โพสต์แล้ว: 09/10/2018 11:08 am
โดย thatsawan
มีช่องว่าง

โค้ด: เลือกทั้งหมด

return $this->helper ->render('sample1.html');


แก้เป็น

โค้ด: เลือกทั้งหมด

return $this->helper->render('sample1.html');

Re: Q - วิธีการแก้ไข้ปัญหาการเรียกใช้งาน function render() ในการทำ extention บน phpbb

โพสต์แล้ว: 09/10/2018 11:09 am
โดย Ittichai_chupol
ได้ครับ เดียวลองดูครับ

Re: Q - วิธีการแก้ไข้ปัญหาการเรียกใช้งาน function render() ในการทำ extention บน phpbb

โพสต์แล้ว: 09/10/2018 11:10 am
โดย Ittichai_chupol
ทดลองแก้แล้วก็ไม่ได้ ยังเป้นเหมือนเดิมครับ
แล้วก็ลอง ลบ แคสแล้วก็ยังไม่หายครับ

Re: Q - วิธีการแก้ไข้ปัญหาการเรียกใช้งาน function render() ในการทำ extention บน phpbb

โพสต์แล้ว: 09/10/2018 4:07 pm
โดย thatsawan
ขอดู service.yml หน่อย

Re: Q - วิธีการแก้ไข้ปัญหาการเรียกใช้งาน function render() ในการทำ extention บน phpbb

โพสต์แล้ว: 09/10/2018 4:32 pm
โดย Ittichai_chupol

โค้ด: เลือกทั้งหมด

services :
     mindphp.sample1.controller:
        class :  mindphp\sample1\controller\main
        arguments:
             -  @config
             -  @template
             -  @user 
             -  @controller.helper
             - %core.root_path%
             - %core.php_ext%


Re: Q - วิธีการแก้ไข้ปัญหาการเรียกใช้งาน function render() ในการทำ extention บน phpbb

โพสต์แล้ว: 09/10/2018 4:44 pm
โดย thatsawan

โค้ด: เลือกทั้งหมด

$page_title =  $this->user->lang('MINDPHP');
ลอง echo $page_title exit; ดูหน่อย

Re: Q - วิธีการแก้ไข้ปัญหาการเรียกใช้งาน function render() ในการทำ extention บน phpbb

โพสต์แล้ว: 09/10/2018 4:52 pm
โดย Ittichai_chupol

โค้ด: เลือกทั้งหมด

Fatal error: Call to a member function lang() on null in /opt/lampp/htdocs/phpb3/ext/mindphp/sample1/controller/main.php on line 25

Re: Q - วิธีการแก้ไข้ปัญหาการเรียกใช้งาน function render() ในการทำ extention บน phpbb

โพสต์แล้ว: 09/10/2018 5:12 pm
โดย thatsawan
แสดงว่า ไฟล์ service น่าจะยังผิดยุ
cap รูป การวางไฟล์ใน folder เเต่ละอันมาดูหน่อย

Re: Q - วิธีการแก้ไข้ปัญหาการเรียกใช้งาน function render() ในการทำ extention บน phpbb

โพสต์แล้ว: 09/10/2018 7:02 pm
โดย Ittichai_chupol
วิธีแก้คือ
ปรับเปลี่ยน ในไฟล์ main.php กับ ไฟล์ services.yml ดังนี้




ไฟล์ main.php

โค้ด: เลือกทั้งหมด

<?php

namespace mindphp\sample1\controller;

use Symfony\Component\DependencyInjection\Container;

class main {

    public function __construct(\phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, 
            \phpbb\template\template $template, \phpbb\user $user, \phpbb\controller\helper $helper,  Container $phpbb_container, \phpbb\request\request $request, \phpbb\auth\auth $auth, \phpbb\pagination $pagination, $table_prefix, $phpbb_root_path, $php_ext) {
    
        $this->config = $config;
        $this->db = $db;
        $this->template = $template;
        $this->user = $user;
        $this->helper = $helper;
        $this->phpbb_container = $phpbb_container;
        $this->request = $request;
        $this->auth = $auth;
        $this->pagination = $pagination;
        $this->table_prefix = $table_prefix;
        $this->phpbb_root_path = $root_path;
        $this->php_ext = $php_ext;
    }

    function base($page = 1) {

       $page_title =  $this->user->lang('MINDPHP');
       print_r($this->user->ip);
       print_r($this->user->data['user_id']);
       
       
       return $this->helper->render('sample1_body.html', $page);
    }

}


ไฟล์ services.yml

โค้ด: เลือกทั้งหมด

services:
    mindphp.sample1.controller:
        class: mindphp\sample1\controller\main
        arguments:
            - @config
            - @dbal.conn
            - @template
            - @user
            - @controller.helper
            - @service_container
            - @request
            - @auth
            - @pagination
            - %core.table_prefix%
            - %core.root_path%
            - %core.php_ext%