Tôi hiện đang phát triển trên Windows với WampServer
và có Composer
hoạt động (với OpenSSL
), với Propel được cài đặt mà không có vấn đề và mọi thứ có vẻ hoạt động tốt. Tuy nhiên, dự án của tôi bây giờ cần phải sử dụng số Equal Nest Behaviour
được tìm thấy here.Cài đặt hành vi Propel với Composer
Tôi nghĩ điều này sẽ cho phép tôi sử dụng hành vi đẩy. Trong schema.xml
của tôi, tôi có đoạn mã sau:
<table name="friend">
<behavior name="equal_nest">
<parameter name="parent_table" value="user" />
</behavior>
</table>
Nhưng khi tôi chạy propel-gen sql
tôi nhận được lỗi:
[phingcall] Unknown behavior "equal_nest"; make sure you configured the propel.be
havior.equal_nest.class setting in your build.properties
Các tài liệu nói:
Then, if you don't use Composer, or an autoloader in your application, add the following configuration to your build.properties or propel.ini file:
Làm tôi đoán rằng tôi đã không không phải đặt trong tệp build.properties. Tuy nhiên, đặt nó trong mang lại cho tôi những lỗi sau:
PHP Fatal error: Class 'EqualNestParentBehavior' not found in C:\home\movesleag
ue.com\vendor\craftyshadow\propel-equalnest-behavior\src\EqualNestBehavior.php o
n line 74
Tôi đã không chắc chắn nếu đó là một cái gì đó để làm với tự động load không hoạt động hoặc không gian tên (schema của tôi có một không gian tên, nhưng tôi nhận được lỗi này tương tự khi loại bỏ nó quá).
tập tin composer.json
của tôi trông như thế này:
{
"require": {
"craftyshadow/propel-equalnest-behavior": "dev-master"
}
}
Lưu ý: Tôi đã có Propel trong đó bản thân, nhưng là hành vi equalnest đòi hỏi nó bản thân tôi chỉ để cho rằng làm công việc của mình.
Vì vậy, cách chính xác để sử dụng hành vi Propel với Composer là gì và nếu tôi làm đúng, tại sao tôi lại thấy các lỗi ở trên?
cập nhật
tôi đã thêm dòng này để đầu EqualNestBehaviour.php
:
include __DIR__ . DIRECTORY_SEPARATOR . 'EqualNestParentBehavior.php';
Và SQL dường như được tạo ra một cách chính xác mà không có lỗi. Tuy nhiên, việc thay đổi tập tin đó dường như không thông minh với tôi! Nó có thể là một vấn đề với autoloading? Có bất cứ điều gì bạn có thể nghĩ rằng tôi có thể làm gì để kiểm tra điều đó?
Tôi có thể xác nhận rằng sử dụng Equal Nest Behaviour
trong mã Propel
thực tế của tôi hoạt động tốt, sử dụng các chức năng như addFriends()
- đây là những thay đổi ở trên vẫn còn tại chỗ.
Trong file autoload_namespaces.php
của tôi, tôi có như sau:
<?php
// autoload_namespaces.php generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);
Tôi giả sử bạn đã cài đặt 'php composer.phar'? Có thể thử cài đặt cả Propel và Behaviour thông qua Composer (có vẻ như chỉ là Behavior) .. – Sam
Không, tôi sử dụng cài đặt toàn cầu, vì vậy chỉ 'composer install' hoạt động. Như tôi đã nói ở trên, hành vi 'require's Propel 1.6. *. Tất nhiên, propel được cài đặt quảng cáo làm việc hoặc tôi sẽ không thể nhìn thấy các thông báo lỗi từ Propel cả. – LeonardChallis
Oh Tôi đã bỏ lỡ hành vi bao gồm Propel 1.6. Nó chắc chắn có vẻ giống như một vấn đề tự động tải, tôi sẽ thử nó với Propel trong tệp Composer - chỉ trong trường hợp. – Sam