2017-10-30 10 views
-1

正確にライン26に渡されると、私は引数が少なすぎますタスク:: __構築物()、0 1

このエラーを取得してスリムが、イムPHPを使用して、コントローラ内の私のタスクモデルにアクセスしようとしています

Too few arguments to function App\Models\Task::__construct(), 0 passed on line 26 and exactly one on TodoController.php

事前に感謝、私は同様の質問like thisを参照しましたが、私はそれを私が持っていたものに結びつけませんでした。

最終的に私はTask.phpモデルからメソッドを取得し、必要に応じてコントローラで呼び出す必要があります。

TodoController.php

<?php 


namespace App\Controllers; 

use Slim\Http\Request; 
use Slim\Http\Response; 

use App\Models\Task; 

class TodosController extends BaseController 
{ 

    // public function getTodos($request, $response, $args) 
    // { 
    // $sth = $this->db->prepare("SELECT * FROM tasks ORDER BY task"); 
    // $sth->execute(); 
//   $todos = $sth->fetchAll(); 

//  return $this->c->view->render($response, 'todos.twig', ['todos' => $todos]); 

    // } 

    public function index() 
    { 
     $tasks = new Task(); 
     $tasks->getTodos(); 


    } 

    public function deleteTodo($request, $response, $args) 
    { 
     $sth = $this->db->prepare("DELETE FROM tasks WHERE id=:id"); 
     $sth->bindParam("id", $args['id']); 
     $sth->execute(); 
     $todos = $sth->fetchObject(); 
     $url = urlFor($todos); 
     var_dump($url); 
     return $this->response->withJson($todos)->withRedirect('/todos'); 


    } 

そして、これはここに役立ちます場合は、私のTask.php

<?php 

namespace App\Models; 


use Slim\Views\Twig as View; 
use Interop\Container\ContainerInterface; 

class Task 
{ 

    protected $c; 
    public $db; 

    public function __construct(ContainerInterface $container) 
    { 
     $this->c = $container; 
     $this->db = $container['db']; 

    } 

    public function getTodos($request, $response, $args) 
    { 
     $sth = $this->db->prepare("SELECT * FROM tasks ORDER BY task"); 
     $sth->execute(); 
     $todos = $sth->fetchAll(); 

     return $this->c->view->render($response, 'todos.twig', ['todos' => $todos]); 

    } 




} 

である私はまた別の同様の例like thisを見た、しかしまだ私が何をしているのか理解できませんでした違う。

+0

何かを 'new Task() 'の引数として渡します。 –

+0

は何のようにですか?私はこのことについて少し新しいです。 – JohnC

+0

'public function __construct(ContainerInterface $ container)' <<新しいタスク()を呼び出すときにコンテナを解析する – nogad

答えて

0
public function index($req, $res, $args) 
{ 
    $tasks = new Task($this->container); 
    $tasks->getTodos($req, $res, $args); 
} 
+0

OPが学習する機会があるように、いくつかの説明を提供する必要があります。 – zerkms

+0

私は雄弁なモデルを使いました。とにかくありがとう – JohnC

関連する問題