0

laravel を理解しようとしているときに小さな問題に遭遇したため、助けが必要です。

「予定」モデル、コントローラー、およびさまざまなビューがあります。

モデル:

class Appointment extends Eloquent {

     protected $primaryKey = 'appointment_ID';
     protected $fillable = array('puser_ID', 'apt_date', 'apt_time', 'purpose');
     public $timestamps = false;


}

コントローラ:

class AppointmentsController extends BaseController{

    public $restful = true;

    public function getIndex(){
        return View::make('appointments.index')
        ->with('title','Docket: Appointments & Scheduling')
        ->with('appointments', Appointment::OrderBy('apt_time')->get());
    }

    public function getView($appointment_ID){
        return View::make('appointments.view')
        ->with('title', 'Appointment View')
        ->with('appointment', Appointment::find($appointment_ID));

    }
    public function getNew(){
        return View::make('appointments.index')
        ->with('title', 'Add A New Appointment');
    }
}

「新しい予定を追加」ビュー コード:

extends('layouts.default')

@section('content')
    <h1>Add A New Appointment</h1>

    {{ Form::open(array('url'=>'appointments/create', 'method'=>'post')) }}

<p>
    {{Form::label('puserID', 'User ID')}}<br/>
    {{Form::text('puser_ID'}}
</p>

<p>
    {{Form::label('aptDate', 'Appointment Date')}}<br/>
    {{Form::text('apt_date')}}
</p>        

<p>
    {{Form::label('aptTime', 'Contact Number 1')}}<br/>
    {{Form::text('aptTime'}}
</p>

<p> 
    {{Form::label('purpose', 'Purpose of Visit')}}<br/>
    {{Form::text('purpose'}}
</p>    

<p> {{Form::submit('Add Appointment')}}</p>

{{ Form::close() }}

@endsection

と私の Routes.php ファイル (更新):

Route::get('appointments',array('as'=>'appointments','uses'=>'AppointmentsController@getIndex'));

Route::get('appointments/{appointment_ID}',array('as'=>'appointment','uses'=>'AppointmentsController@getView'));

Route::get('appointments/new',array('as'=>'newAppointment','uses'=>'AppointmentsController@getNew')    );

インデックス ビューのボタンを使用して、「インデックス」ビュー (すべての予定を一覧表示) から「新しい予定を追加」ビューに移動しようとしています。

<p>{{ HTML::linkRoute('newAppointment', 'New Appointment') }}</p>

しかし、インデックスビューから「新しい予定」ボタンを押すと、コードは「オブジェクト以外のプロパティを取得しようとしています」というエラーをスローしています。

助けてください。

要求に応じたデフォルト/レイアウト ビュー:

<!DOCTYPE html>
<html>
<head>
<title>{{$title}}</title>
</head>
<body>
    @if(Session::has('message'))
        <p style="color: green;">{{ Session::get('message') }}</p>
    @endif

    @yield('content')
</body>
</html>

エラーメッセージ:

ErrorException
Trying to get property of non-object
open: /Library/WebServer/Documents/laravel-master/app/storage/views/5258152a378521b65c6fd9801aedd9fd
<?php $__env->startSection('content'); ?>

    <h1><?php echo e($appointment->puser_ID); ?></h1>
    <p><small><?php echo e($appointment->apt_date); ?></small></p>
    <p><small><?php echo e($appointment->apt_time); ?></small></p>
    <p><small><?php echo e($appointment->purpose); ?></small></p>
4

3 に答える 3

0

戻り値は object です。toArray() を使用して、オブジェクトを array() に返すことができます。{{$post['id']}} のようなブレード テンプレートで要素を表示するための値を取得する場合

于 2014-04-04T03:18:25.607 に答える
0

移行 : ポスト

<?php

Illuminate\Database\Schema\Blueprint を使用します。Illuminate\Database\Migrations\Migration を使用します。

クラス CreatePostsTable は移行を拡張します {

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('posts', function(Blueprint $table)
    {
        $table->increments('id');
        $table->string('title');
        $table->string('read_more');
        $table->string('content');
        $table->unsignedInteger('comment_count');
        $table->timestamps();
        $table->engine = 'MyISAM';
    });
    DB::statement('ALTER TABLE posts ADD FULLTEXT search(title, content)');
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
   Schema::table('posts', function(Blueprint $table){
       $table->dropIndex('search');
       $table->drop();
   });
}

コントローラー:

public function show($id)
{
    $post = Post::find($id)->toArray();
    return View::make('detail', compact('post'));
}

表示:detail.blade.php

@extends("layouts.master")

@section('content')
{{$post['id']}}
{{$post['title']}}
@stop
于 2014-04-04T03:15:10.743 に答える
0

getNew() のビューは、インデックスとは異なるビューであってはなりませんか? 例:View::make('appointments.new')のインスタンスView::make('appointments.index')

public function getNew(){
    return View::make('appointments.new')
    ->with('title', 'Add A New Appointment');
}

編集

に構文エラーがありForm::text()ます。すべての you で括弧を閉じる必要がありますForm::text()。これが解決しない場合は、layout/defaultビューを投稿してください。

編集2

あってはなりません

Route::get('appointments/new',array('as'=>'newAppointment','uses'=>'AppointmentsController@getNew')    );

のインスタンス:

Route::get('appointments/new',array('as'=>'newAppointment','uses'=>'UsersController@getNew')    );

?

于 2013-07-04T23:21:20.537 に答える